“应用程序配置不正确程序无法启动”这是经常会遇到的错误提示。那么它到底意味着什么,如何解决这个问题?

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这个组件,或者组件版本不正确,只要安装正确的版本就能解决。

 

01-30 15:58