QQ打不开怎么办?
32个回答
展开全部
第一种原因,软件自身损坏,出现这种问题是因为你所下载的软件本身有问题,文件不完整,导致安装后不能打开。出现这种情况需要到官方网站下载最新版本的qq软件。
2/7
首先打开qq官网首页,然后点击下载链接开始下载。下载之后安装,如果没有别的软件程序禁止,就能够打开。
3/7
第二种可能的原因是系统组策略禁止qq的运行,你可以通过禁用此设置来达到非得打开qq的目的。首先打开运行框,在运行框中输入gpedit.msc 然后确定。
4/7
在组策略管理器中,依次打开用户配置---管理模板--系统,然后在右面的列表中向下查找不要运行指定的应用程序这样一个选项,然后双击打开。如图。
5/7
如果你发现你的设置为已启用,并且在列表中显示出了你的qq软件,那么说明就是这里给禁止的,你只要禁用它就可以了。
6/7
将已禁用前面的小圆圈选定,如图,不允许的程序列表处的按钮成了灰色的不可点击状态,这时就禁用了这个设置,点击确定退出就可以正常打开 了。
7/7
第三种情况是有些监控类的软件禁止了qq的运行,你只要打开这类监控软件然后设置为取消禁止就可以了。由于监控类软件种类繁多,本经验中不再介绍,请你根据你所安装的监控软件来具体有针对性地设置。
2/7
首先打开qq官网首页,然后点击下载链接开始下载。下载之后安装,如果没有别的软件程序禁止,就能够打开。
3/7
第二种可能的原因是系统组策略禁止qq的运行,你可以通过禁用此设置来达到非得打开qq的目的。首先打开运行框,在运行框中输入gpedit.msc 然后确定。
4/7
在组策略管理器中,依次打开用户配置---管理模板--系统,然后在右面的列表中向下查找不要运行指定的应用程序这样一个选项,然后双击打开。如图。
5/7
如果你发现你的设置为已启用,并且在列表中显示出了你的qq软件,那么说明就是这里给禁止的,你只要禁用它就可以了。
6/7
将已禁用前面的小圆圈选定,如图,不允许的程序列表处的按钮成了灰色的不可点击状态,这时就禁用了这个设置,点击确定退出就可以正常打开 了。
7/7
第三种情况是有些监控类的软件禁止了qq的运行,你只要打开这类监控软件然后设置为取消禁止就可以了。由于监控类软件种类繁多,本经验中不再介绍,请你根据你所安装的监控软件来具体有针对性地设置。
展开全部
设置中QQ网络类型与机器的网络类型不符(很少见)
这是我以前碰到的几种问题,希望能给你些帮助
建议您可参考以下设置:
1、首先请您检查下防火墙设置,建议暂时关闭防火墙;
2、可能是由于QQ系统调整引起的,所以会造成某些号段不能登陆,建议您可以稍后再进行尝试;
3、尝试使用选择登陆服务器(目前有三种模式,分别是UDP模式、TCP模式和会员VIP模式)
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——选择登陆服务器,依次选择UDP模式、TCP模式和会员VIP模式(仅提供给会员);
4、可能是您所使用的代理已经失效,更换代理或者不使用代理,即可正常登陆
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择不使用代理,或者其他模式(选择好代理后,请先测试下是否可以正常使用);
5、因局域网实行封锁限制(端口被封),所以造成您的QQ无法登陆
解决方法:尝试使用HTTP代理
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择HTTP代理(选择好代理后,请先测试下是否可以正常使用);
6、最后,建议您尝试使用TM登陆。
请您可以将本地的聊天记录清除(建议在清除前先备份,以免丢失)再登陆尝试。在2005beta3版本登陆窗口中先输入QQ号码——左下角
高级设置——清除记录——同时删除该帐号对应的所有聊天记录文件
打勾
——
输入QQ密码——确定
即可清除记录。
或者删除QQ安装目录下的相应号码文件夹,最后重新登陆即可。
还后一个百试百灵的方法:卸载原来的QQ程序,然后再下载一个最新版本的QQ的安装程序,并且安装,最后重启,那一定行。
安全起见,还是到官方网站下载吧!
http://im.qq.com/
****
还有可能是被木马损坏了
这是我以前碰到的几种问题,希望能给你些帮助
建议您可参考以下设置:
1、首先请您检查下防火墙设置,建议暂时关闭防火墙;
2、可能是由于QQ系统调整引起的,所以会造成某些号段不能登陆,建议您可以稍后再进行尝试;
3、尝试使用选择登陆服务器(目前有三种模式,分别是UDP模式、TCP模式和会员VIP模式)
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——选择登陆服务器,依次选择UDP模式、TCP模式和会员VIP模式(仅提供给会员);
4、可能是您所使用的代理已经失效,更换代理或者不使用代理,即可正常登陆
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择不使用代理,或者其他模式(选择好代理后,请先测试下是否可以正常使用);
5、因局域网实行封锁限制(端口被封),所以造成您的QQ无法登陆
解决方法:尝试使用HTTP代理
操作方法:在2005
Beta3版本登陆窗口的左下角高级设置——网络设置——类型,选择HTTP代理(选择好代理后,请先测试下是否可以正常使用);
6、最后,建议您尝试使用TM登陆。
请您可以将本地的聊天记录清除(建议在清除前先备份,以免丢失)再登陆尝试。在2005beta3版本登陆窗口中先输入QQ号码——左下角
高级设置——清除记录——同时删除该帐号对应的所有聊天记录文件
打勾
——
输入QQ密码——确定
即可清除记录。
或者删除QQ安装目录下的相应号码文件夹,最后重新登陆即可。
还后一个百试百灵的方法:卸载原来的QQ程序,然后再下载一个最新版本的QQ的安装程序,并且安装,最后重启,那一定行。
安全起见,还是到官方网站下载吧!
http://im.qq.com/
****
还有可能是被木马损坏了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法一、退出QQ,重新打开就ok了;
方法二、清内存再进去;
方法三、升级至最新QQ客户端,再打开领取;
方法四、返回多点几次就可以了。
红包打不开最大的原因就是当前抢红包的人太多,让系统有点反应不过来,大家可以返回以后快速点击抢红包,毕竟下手要快,不然红包就没有了哦!当然,如果是单独发给你的红包,那就不用急,按照以上方法进行操作一定会领取到红包的。
方法二、清内存再进去;
方法三、升级至最新QQ客户端,再打开领取;
方法四、返回多点几次就可以了。
红包打不开最大的原因就是当前抢红包的人太多,让系统有点反应不过来,大家可以返回以后快速点击抢红包,毕竟下手要快,不然红包就没有了哦!当然,如果是单独发给你的红包,那就不用急,按照以上方法进行操作一定会领取到红包的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“应用程序配置不正确,程序无法启动”详细举例(1)(vc2008
sp1)
应用程序配置不正确,程序无法启动
的解决方法资料收集
vc2005/vc2008采用了新的程序部署技术(manifest清单文件),manifest清单文件实际上类似于我们常用的makefile文件,它定义了程序运行的依赖关系(程序运行所需要的dll库的名称、版本等)。
程序运行,首先根据manifest清单文件(这个文件可以嵌入到exe或dll中,或者单独生成外部文件,可以通过vc2005/vc2008的编译选项控制:工程“属性”->“配置属性”->“清单工具”->“输入输出”->“嵌入清单文件”,选择“是”或“否”来控制)来查找程序运行需要的dll库的名称、版本等,如果所在的系统中没有程序运行所需要的dll库和相应的manifest清单文件,则弹出“应用程序配置不正确,程序无法启动”对话框。
另外要注意,由于vc2005/vc2008与.net集成,导致出现一个新的概念:在.net中,将exe、dll都看成“程序集(assemble)”,每个程序集(assemble)都附带有一个manifest清单文件,因此使得vc2005/vc2008的CRT(C
运行时库)、MFC、ATL等dll库都附带有一个manifest清单文件。
归根结底是由于老版本的系统没有我们开发的程序运行所需要的基本运行时库(2k、xp系统只有vc6的一些dll库,而没有vc2005、vc2008所需要的dll库以及相应的manifest清单文件,而在vista系统或者即将到来的windows
7系统上则包含有vc2005、vc2008的dll库和manifest清单文件)
ps:上面的那段话说的有点幼稚和简单了,这里涉及到很多的问题:程序的升级更新、vs的补丁、库的版本问题等等,不是简单的拷贝、粘贴就能解决的。。。
举个例子:(在XP
SP3系统下)
使用vc2008
express
sp1版(没有mfc、atl),新建一个“HelloWorld”的“win32控制台应用程序”工程,在release下编译,此时默认的编译选项:(在这里我们只关注与我们的问题相关的几个选项)
1、工程“属性”->“配置属性”->“c/c++”->“代码生成”->“运行库”
默认选项为/MD(release)、/MDd(debug),对这几个编译选项不清楚的可以参见:
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
2、工程“属性”->“配置属性”->“清单工具”->“输入输出”->“嵌入清单文件”
默认选项为“是”(表示将manifest清单文件嵌入到程序中);当然,我们也可以选择“否”,从而单独生成一个manifest清单文件,不过这会增加不必要的依赖项,因此不建议选择“否”。
编译->链接之后在“
HelloWorld
”工程的release或debug目录下,我们能够看到一个HelloWorld.exe.intermediate.manifest清单文件(根据编译选项,见上,vc2008将manifest清单文件嵌入到了exe程序中,HelloWorld.exe.intermediate.manifest清单文件是一个临时文件,但它的内容与嵌入到exe程序的manifest文件是一样的),用文本编辑器打开该文件(用“记事本”也行,不过格式太乱,看不清楚内容,推荐使用vim或其它的文本编辑器查看),大致内容如下:
ps:在网上看到另外的一个方法,用记事本打开exe或dll程序,查看嵌入到exe或dll中的manifest清单文件,方法:“打开记事本,然后将exe或dll拖入到记事本中,当然了,肯定会出现大段的乱码,没关系,直接往后看,就能发现类似于下面的内容的部分”
XML语言:
HelloWorld.exe.intermediate.manifest
01
<?xml
version='1.0'
encoding='UTF-8'
standalone='yes'?>
02
<assembly
xmlns='urn:schemas-microsoft-com:asm.v1'
manifestVersion='1.0'>
03
<trustInfo
xmlns="urn:schemas-microsoft-com:asm.v3">
04
<security>
05
<requestedPrivileges>
06
<requestedExecutionLevel
level='asInvoker'
uiAccess='false'
/>
07
</requestedPrivileges>
08
</security>
09
</trustInfo>
10
<dependency>
11
<dependentAssembly>
12
<assemblyIdentity
type='win32'
name='Microsoft.VC90.CRT'
version='9.0.21022.8'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'
/>
13
</dependentAssembly>
14
</dependency>
15
</assembly>
我们重点查看红色部分,这说明编译后的exe程序依赖于vc90(也即vc2008)的CRT(C运行时库),版本9.0.210022.8(这是由于使用/MD选项,程序动态的依赖于CRT,如果使用/MT选项,则会将CRT静态链接到程序中,当然,这会使程序的尺寸急剧的增长,大概有10倍的大小差距)
当exe程序执行时,它会根据嵌入的manifest文件查找相应的依赖项,在这个HelloWorld.exe程序中,它依赖于vc90
CRT,因此它会在“C:\WINDOWS\WinSxS”和“当前目录”下查找相应的dll库以及manifest文件,(这里指的是xp系统,不考虑vista系统,具体的参见:程序集搜索顺序)
在我的机器上有2个版本的vc90
CRT(由于安装了vc2008
express
sp1)
vc90
CRT的dll库位于(9.0.21022.8版本)“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375”
相应的manifest文件则位于“C:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375.manifest”
vc90
CRT的dll库位于(9.0.30729版本)“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_6f74963e”
相应的manifest文件则位于“C:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_6f74963e.manifest”
在这里我们就有一个疑问了,我们的开发环境是vc2008
express
sp1,那么我们的程序链接的CRT版本应该是9.0.30729版本的啊?(这个不是我瞎说的,大家可以用dependency
walker来查看程序实际链接的DLL版本),为什么在manifest文件中依赖的CRT却是9.0.21022.8版本的?这里就涉及到一个新的名词“policy
",操作系统会根据C:\WINDOWS\WinSxS\Policies\x86_policy.9.0.Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_x-ww_b7353f75\9.0.30729.1.policy文件的内容,进行dll版本的跳转(重点看深蓝斜体字部分)从而选择了9.0.30729版本的vc90
CRT
(这个所谓的“policy跳转”是道听途说来的,具体的英文资料藏在microsoft的什么地方我就不得而知了。里面夹带了一些我自己的主观猜测,不然的话,没有办法解释manifest版本号9.0.21022.8是,而实际链接的dll的版本号却是9.0.30729)
XML语言:
9.0.30729.1.policy01
<?xml
version="1.0"
encoding="UTF-8"
standalone="yes"?>
02
<!--
Copyright
(c)
Microsoft
Corporation.
All
rights
reserved.
-->
03
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
04
<assemblyIdentity
type="win32-policy"
name="policy.9.0.Microsoft.VC90.CRT"
version="9.0.30729.1"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"/>
05
<dependency>
06
<dependentAssembly>
07
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"/>
08
<bindingRedirect
oldVersion="9.0.20718.0-9.0.21022.8"
newVersion="9.0.30729.1"/>
09
<bindingRedirect
oldVersion="9.0.30201.0-9.0.30729.1"
newVersion="9.0.30729.1"/>
10
</dependentAssembly>
11
</dependency>
12
</assembly>
如果我们将这个HelloWorld.exe拷贝到其它的机器上(没有安装vc2008
sp1或Microsoft
Visual
C++
2008
SP1
Redistributable
Package
(x86)),则程序因为没能找到vc90
CRT,而不能运行,弹出“应用程序配置不正确,程序无法启动”对话框。
根据参考资料的文章中的内容,对于release版程序,有一个简单的办法就是安装“vcredist_x86.exe”,文件大小4M左右,自动安装在“C:\WINDOWS\WinSxS”目录下,包含了CRT、MFC、ATL等库的dll和manifest清单文件;整个安装时间不到1分钟。
如果机器上安装了vc2005/vc2008,则会自动的安装vcredist_x86.exe程序,安装后在“控制面板”->“添加删除程序”中有一项“Microsoft
Visual
c++
2008
Redistributable
-
x86
9.0.3.729”(我安装的是Microsoft
Visual
C++
2008
SP1
Redistributable
Package
(x86)
版本)
注意:要根据编译器版本以及vc2005/vc2008是否安装了sp1补丁进行选择对应的vcredist.exe版本
上述的解决办法我称之为共享程序集部署方法,同样的我们也可以采用私有程序集的部署方式来发布程序。
Helloworld例子的私有程序集的部署方法:(针对release版本,仍然是采用上面的例子
,采用参考资料中提到的第2中私有程序集部署方法:将Microsoft.VC90.CRT目录下的manifest文件的版本号修改为9.0.21022.8)
1、将编译后的程序拷贝到一个目录下,假定为d:\helloworld
2、将vc安装目录下的redist\x86目录下的Microsoft.VC90.CRT目录拷贝到d:\helloworld(假定vs安装在C:\Program
Files\Microsoft
Visual
Studio
9.0,则vc安装目录为C:\Program
Files\Microsoft
Visual
Studio
9.0\VC)
3、将Microsoft.VC90.CRT目录下的manifest文件的版本号修改为9.0.21022.8(用记事本打开修改)
最终发布程序的目录结构
D:\helloworld
|--helloworld.exe
|--Microsoft.VC90.CRT
|--Microsoft.VC90.CRT.manifest
|--msvcm90.dll
|--msvcp90.dll
|--msvcr90.dll
这个时候,程序的manifest文件(已经内嵌到exe中了)依赖的vc90
CRT的版本号和Microsoft.VC90.CRT.manifest文件的版本号对应一致,都是9.0.21022.8(但是要注意的是,我们的helloworld程序实际上依赖的vc90
CRT版本是9.0.30729版本,这里只是采用了一种欺骗的方法,因为我们编译时链接的CRT的版本是9.0.30729版本)
sp1)
应用程序配置不正确,程序无法启动
的解决方法资料收集
vc2005/vc2008采用了新的程序部署技术(manifest清单文件),manifest清单文件实际上类似于我们常用的makefile文件,它定义了程序运行的依赖关系(程序运行所需要的dll库的名称、版本等)。
程序运行,首先根据manifest清单文件(这个文件可以嵌入到exe或dll中,或者单独生成外部文件,可以通过vc2005/vc2008的编译选项控制:工程“属性”->“配置属性”->“清单工具”->“输入输出”->“嵌入清单文件”,选择“是”或“否”来控制)来查找程序运行需要的dll库的名称、版本等,如果所在的系统中没有程序运行所需要的dll库和相应的manifest清单文件,则弹出“应用程序配置不正确,程序无法启动”对话框。
另外要注意,由于vc2005/vc2008与.net集成,导致出现一个新的概念:在.net中,将exe、dll都看成“程序集(assemble)”,每个程序集(assemble)都附带有一个manifest清单文件,因此使得vc2005/vc2008的CRT(C
运行时库)、MFC、ATL等dll库都附带有一个manifest清单文件。
归根结底是由于老版本的系统没有我们开发的程序运行所需要的基本运行时库(2k、xp系统只有vc6的一些dll库,而没有vc2005、vc2008所需要的dll库以及相应的manifest清单文件,而在vista系统或者即将到来的windows
7系统上则包含有vc2005、vc2008的dll库和manifest清单文件)
ps:上面的那段话说的有点幼稚和简单了,这里涉及到很多的问题:程序的升级更新、vs的补丁、库的版本问题等等,不是简单的拷贝、粘贴就能解决的。。。
举个例子:(在XP
SP3系统下)
使用vc2008
express
sp1版(没有mfc、atl),新建一个“HelloWorld”的“win32控制台应用程序”工程,在release下编译,此时默认的编译选项:(在这里我们只关注与我们的问题相关的几个选项)
1、工程“属性”->“配置属性”->“c/c++”->“代码生成”->“运行库”
默认选项为/MD(release)、/MDd(debug),对这几个编译选项不清楚的可以参见:
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
2、工程“属性”->“配置属性”->“清单工具”->“输入输出”->“嵌入清单文件”
默认选项为“是”(表示将manifest清单文件嵌入到程序中);当然,我们也可以选择“否”,从而单独生成一个manifest清单文件,不过这会增加不必要的依赖项,因此不建议选择“否”。
编译->链接之后在“
HelloWorld
”工程的release或debug目录下,我们能够看到一个HelloWorld.exe.intermediate.manifest清单文件(根据编译选项,见上,vc2008将manifest清单文件嵌入到了exe程序中,HelloWorld.exe.intermediate.manifest清单文件是一个临时文件,但它的内容与嵌入到exe程序的manifest文件是一样的),用文本编辑器打开该文件(用“记事本”也行,不过格式太乱,看不清楚内容,推荐使用vim或其它的文本编辑器查看),大致内容如下:
ps:在网上看到另外的一个方法,用记事本打开exe或dll程序,查看嵌入到exe或dll中的manifest清单文件,方法:“打开记事本,然后将exe或dll拖入到记事本中,当然了,肯定会出现大段的乱码,没关系,直接往后看,就能发现类似于下面的内容的部分”
XML语言:
HelloWorld.exe.intermediate.manifest
01
<?xml
version='1.0'
encoding='UTF-8'
standalone='yes'?>
02
<assembly
xmlns='urn:schemas-microsoft-com:asm.v1'
manifestVersion='1.0'>
03
<trustInfo
xmlns="urn:schemas-microsoft-com:asm.v3">
04
<security>
05
<requestedPrivileges>
06
<requestedExecutionLevel
level='asInvoker'
uiAccess='false'
/>
07
</requestedPrivileges>
08
</security>
09
</trustInfo>
10
<dependency>
11
<dependentAssembly>
12
<assemblyIdentity
type='win32'
name='Microsoft.VC90.CRT'
version='9.0.21022.8'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'
/>
13
</dependentAssembly>
14
</dependency>
15
</assembly>
我们重点查看红色部分,这说明编译后的exe程序依赖于vc90(也即vc2008)的CRT(C运行时库),版本9.0.210022.8(这是由于使用/MD选项,程序动态的依赖于CRT,如果使用/MT选项,则会将CRT静态链接到程序中,当然,这会使程序的尺寸急剧的增长,大概有10倍的大小差距)
当exe程序执行时,它会根据嵌入的manifest文件查找相应的依赖项,在这个HelloWorld.exe程序中,它依赖于vc90
CRT,因此它会在“C:\WINDOWS\WinSxS”和“当前目录”下查找相应的dll库以及manifest文件,(这里指的是xp系统,不考虑vista系统,具体的参见:程序集搜索顺序)
在我的机器上有2个版本的vc90
CRT(由于安装了vc2008
express
sp1)
vc90
CRT的dll库位于(9.0.21022.8版本)“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375”
相应的manifest文件则位于“C:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375.manifest”
vc90
CRT的dll库位于(9.0.30729版本)“C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_6f74963e”
相应的manifest文件则位于“C:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_6f74963e.manifest”
在这里我们就有一个疑问了,我们的开发环境是vc2008
express
sp1,那么我们的程序链接的CRT版本应该是9.0.30729版本的啊?(这个不是我瞎说的,大家可以用dependency
walker来查看程序实际链接的DLL版本),为什么在manifest文件中依赖的CRT却是9.0.21022.8版本的?这里就涉及到一个新的名词“policy
",操作系统会根据C:\WINDOWS\WinSxS\Policies\x86_policy.9.0.Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_x-ww_b7353f75\9.0.30729.1.policy文件的内容,进行dll版本的跳转(重点看深蓝斜体字部分)从而选择了9.0.30729版本的vc90
CRT
(这个所谓的“policy跳转”是道听途说来的,具体的英文资料藏在microsoft的什么地方我就不得而知了。里面夹带了一些我自己的主观猜测,不然的话,没有办法解释manifest版本号9.0.21022.8是,而实际链接的dll的版本号却是9.0.30729)
XML语言:
9.0.30729.1.policy01
<?xml
version="1.0"
encoding="UTF-8"
standalone="yes"?>
02
<!--
Copyright
(c)
Microsoft
Corporation.
All
rights
reserved.
-->
03
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
04
<assemblyIdentity
type="win32-policy"
name="policy.9.0.Microsoft.VC90.CRT"
version="9.0.30729.1"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"/>
05
<dependency>
06
<dependentAssembly>
07
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"/>
08
<bindingRedirect
oldVersion="9.0.20718.0-9.0.21022.8"
newVersion="9.0.30729.1"/>
09
<bindingRedirect
oldVersion="9.0.30201.0-9.0.30729.1"
newVersion="9.0.30729.1"/>
10
</dependentAssembly>
11
</dependency>
12
</assembly>
如果我们将这个HelloWorld.exe拷贝到其它的机器上(没有安装vc2008
sp1或Microsoft
Visual
C++
2008
SP1
Redistributable
Package
(x86)),则程序因为没能找到vc90
CRT,而不能运行,弹出“应用程序配置不正确,程序无法启动”对话框。
根据参考资料的文章中的内容,对于release版程序,有一个简单的办法就是安装“vcredist_x86.exe”,文件大小4M左右,自动安装在“C:\WINDOWS\WinSxS”目录下,包含了CRT、MFC、ATL等库的dll和manifest清单文件;整个安装时间不到1分钟。
如果机器上安装了vc2005/vc2008,则会自动的安装vcredist_x86.exe程序,安装后在“控制面板”->“添加删除程序”中有一项“Microsoft
Visual
c++
2008
Redistributable
-
x86
9.0.3.729”(我安装的是Microsoft
Visual
C++
2008
SP1
Redistributable
Package
(x86)
版本)
注意:要根据编译器版本以及vc2005/vc2008是否安装了sp1补丁进行选择对应的vcredist.exe版本
上述的解决办法我称之为共享程序集部署方法,同样的我们也可以采用私有程序集的部署方式来发布程序。
Helloworld例子的私有程序集的部署方法:(针对release版本,仍然是采用上面的例子
,采用参考资料中提到的第2中私有程序集部署方法:将Microsoft.VC90.CRT目录下的manifest文件的版本号修改为9.0.21022.8)
1、将编译后的程序拷贝到一个目录下,假定为d:\helloworld
2、将vc安装目录下的redist\x86目录下的Microsoft.VC90.CRT目录拷贝到d:\helloworld(假定vs安装在C:\Program
Files\Microsoft
Visual
Studio
9.0,则vc安装目录为C:\Program
Files\Microsoft
Visual
Studio
9.0\VC)
3、将Microsoft.VC90.CRT目录下的manifest文件的版本号修改为9.0.21022.8(用记事本打开修改)
最终发布程序的目录结构
D:\helloworld
|--helloworld.exe
|--Microsoft.VC90.CRT
|--Microsoft.VC90.CRT.manifest
|--msvcm90.dll
|--msvcp90.dll
|--msvcr90.dll
这个时候,程序的manifest文件(已经内嵌到exe中了)依赖的vc90
CRT的版本号和Microsoft.VC90.CRT.manifest文件的版本号对应一致,都是9.0.21022.8(但是要注意的是,我们的helloworld程序实际上依赖的vc90
CRT版本是9.0.30729版本,这里只是采用了一种欺骗的方法,因为我们编译时链接的CRT的版本是9.0.30729版本)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-02-13
展开全部
电脑还是手机版的?
先卸载qq,然后清理一下垃圾,再重新下载qq安装试试?
如果是手机,重新下载还是不行,备份好手机里的重要文件,然后到设置里找到“重置”重置后就的手机就是恢复到还没有安装软件前的样子,这样不管是垃圾还是什么都没有,需要重新下载安装需要用的软件。
这种方法对系统错乱之类的有一定的用,但是这种方法不是刷机重装系统哦,如果是系统本身出毛病了,这种方法可能就没用了,需要去刷机重装系统。
重装系统的方法我也不会,不建议用网上那种一键刷机,容易出毛病,最好是去电脑城或专卖店刷。
如果有认识做这方面或懂这个的人最好了,可以让朋友帮帮忙。
先卸载qq,然后清理一下垃圾,再重新下载qq安装试试?
如果是手机,重新下载还是不行,备份好手机里的重要文件,然后到设置里找到“重置”重置后就的手机就是恢复到还没有安装软件前的样子,这样不管是垃圾还是什么都没有,需要重新下载安装需要用的软件。
这种方法对系统错乱之类的有一定的用,但是这种方法不是刷机重装系统哦,如果是系统本身出毛病了,这种方法可能就没用了,需要去刷机重装系统。
重装系统的方法我也不会,不建议用网上那种一键刷机,容易出毛病,最好是去电脑城或专卖店刷。
如果有认识做这方面或懂这个的人最好了,可以让朋友帮帮忙。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询