“应用程序配置不正确程序无法启动”这是经常会遇到的错误提示。那么它到底意味着什么,如何解决这个问题?
1. 这个错误提示意味着什么?
意味着此程序运行所需的组件不存在。
这个组件的描述在程序的manifest文件里。
大多数manifest文件是以资源的形式内嵌在可执行文件里面的。
这个文件长什么样?我随便找来了一个EXE文件来研究,导出它的资源文件:/.rsrc/1033/manifest/1
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
从这个文件内容可以看出,它的本质是一个类似XML的文本文件,dependency节点描述了此程序运行所需的组件信息,这个文件里面有两个dependency节点,分别描述了两个组件,一个是Microsoft.VC80.CRT,另一个是Microsoft.Windows.Common-Controls。
Microsoft.VC80.CRT 就是VS2005编译器所带的VC++运行时库版本,说明此程序是用VS2005开发的。
Microsoft.Windows.Common-Controls 就是Windows的通用控件库,这个一般是系统都有的组件,可能版本有所不同。
这里我们以Microsoft.VC80.CRT为例,
从文件内容可以看出,这个组件的其它信息:
CPU架构是X86,
系统类型是Win32,
版本号是8.0.50608.0,
公钥令牌是:1fc8b3b9a1e18e3b
2. 如何解决这个问题?
如果这个程序运行时提示:应用程序配置不正确程序无法启动
那么很可能是系统中没有Microsoft.VC80.CRT这个组件,或者组件版本不正确,只要安装正确的版本就能解决。