错误14001
5bce955cf12af3417f055dadc0212920
“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”
此md5为QQ浏览器带有效数字签名的文件,说明是正常文件,但直接运行时,显示配置不正确。用OD直接无法加载。
明明是好的PE文件,为什么OD无法加载?直接用WinDBG加载,会显示Win32 ERROR On14001错误。
以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。所以,上面提示应该是缺少dll。
查看导入表,确实需要一个dll,在网上找了一个一样的,放到同目录下,还是显示上面错误。
很是奇怪,还有需要导入的dll文件?分析资源时,看到该文件里有mainifest,把mainifest用reshacker删除后,再用OD加载,发现可以正常加载了。这是为什么?
专门去查了下资料,可百度:程序集清单(Assembly Manifest)的应用。发现mainifest中有个assemblyIdentity字段,字段中有个version,这个version用来指定版本路径的,简单点说就是这个version是"9.3.6494.400",那么在这个PE文件下就必须要有个文件夹叫"9.3.6494.400",在这个文件夹下里面存着相关dll文件。
为了证实说法,去QQ浏览器官方下载并安装了,将安装目录下的9.3.6xxx.xxx文件夹复制到了这个PE文件同目录下,双击运行会报上面的错误,将文件夹名改为"9.3.6494.400"再双击后发现,PE可以直接运行起来了。
以下为相关查找的资料:
百度:dll文件加载运行加载的14001错误,由于应用程序配置不正确,应用程序未能启动
http://blog.csdn.net/huapeng_guo/article/details/7774876
最近在处理项目问题的的时候发现了这么一个问题,就是我们的程序在调用第三方提供的dll文件的时候在一台机器上面会报14001的错误,但是在另一台机器上面不会。两台机器上面的操作系统是相同的。针对这个问题和这个错误码,查找了很多的相关资料。
vc错误查找的给予的对于14001的错误的解释:由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
下面是搜集的一些网络资料针对这个问题的说明和解决方法个人感觉还是很有参考意义的:
资料
在VS2005下用C++写的程序,在一台未安装VS2005的系统上,
用命令行方式运行,提示:
“系统无法执行指定的程序”
直接双击运行,提示:
“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。
自己实验了一下,感觉以下几种解决办法是可行的:
方法一:
在类似C:\Program Files\M