VC2005生成的EXE中的版本信息
来源:互联网 发布:mac 终端文件路径 编辑:程序博客网 时间:2024/04/29 00:04
VC2005生成的EXE中的版本信息
VC2005生成EXE之外,还生成manifest文件。该文件列出了EXE依赖的各个模块的所有信息。包括模块名,版本,处理器体系结构,及public key。
如下是一个manifest文件的内容。
<?xmlversion='1.0' encoding='UTF-8' standalone='yes'?>
<assemblyxmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32'
name='Microsoft.VC80.CRT'
version='8.0.50727.762'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32'
name='Microsoft.VC80.MFC'
version='8.0.50727.762'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
可以看出,依赖CRT和MFC两个模块,版本是8.0.50727.762。
并且在EXE文件中,也包含该manifest文件的内容。这样EXE文件本身就是自说明的。
可以使用strings程序提取EXE中的字符串信息。可以看到最后一部分信息就是manifest。
当要执行EXE程序时,osloader首先检查EXE依赖的相应版本的模块。如果未发现相应版本的模块时,程序出错。
系统会从<<系统盘/WINDOWS/WinSxS>>目录中查找模块的相应版本。
该目录下的子目录一览如下:
…
x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_cbb27474
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.163_x-ww_681e29fb
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f
x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471
x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4
x86_Microsoft.VC80.DebugOpenMP_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_66b81908
x86_Microsoft.VC80.DebugOpenMP_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_c3ea353b
x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_3415f6d0
x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_91481303
x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_dec6ddd2
x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05
x86_Microsoft.VC80.OpenMP_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0ee63867
x86_Microsoft.VC80.OpenMP_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6c18549a
…
实际项目中,确实出现过因为找不到依赖模块的正确版本,而不能执行的情况。所以一定要留意版本信息。
- VC2005生成的EXE中的版本信息
- 给Qt生成的exe执行程序添加版本信息
- 给Qt生成的exe执行程序添加版本信息
- VC2005中提示"生成cmd.exe时出错"的解决方法
- 【IDE-Visual Studio】关于exe的版本中“文件版本”和其他版本信息中的“文件版本”、以及“产品版本”
- 如何给VC之Win32生成的.exe文件添加版本信息
- vc2005 调试时提示错误信息:“无法找到.exe的调试信息” 的解决方法
- 读取EXE文件的版本信息
- 获取EXE或者DLL的版本信息
- C++外部程序修改exe文件属性信息的版本信息
- [VB.NET]vb.net2003生成的exe用右键属性看版本信息,总有个Assembly Verssion项目,怎么去掉它?
- VC2005中 提示”生成"cmd.exe"时出错 “
- VC2005中 提示”生成"cmd.exe"时出错 “
- VC2005 error PRJ0003 : 生成“cmd.exe”时出错
- 迫于用户压力,新版易语言已取消为编译后的EXE强制添加版本信息中的“备注”
- 获取EXE版本信息 GetFileVersionInfo
- 获取Exe文件版本信息的函数(拷贝收藏)
- delphi获取Exe文件版本信息的函数[转]
- C程序设计的常用算法
- OGNL是什么
- 串口扩展方案总结
- DWR是什么?
- javafx 还是 flex
- VC2005生成的EXE中的版本信息
- 春运-车票-难
- 什么是业务逻辑
- ActionScript 3.0中用XMLSocket与服务器通讯程序——源码
- 回声消除技术
- J2EE项目代码编写规范(转)
- 网页常用Javascript
- Javascript中event.keyCode键码值表
- C++ 隐式和显式 初始化,类型转换