当你运行一些新版程序(比如用 VC2012/VC11 默认情况下编译出来的程序)在XP上运行出现“不是有效的Win32应用程序”时,
如果是你自己的项目,你可以更新微软提供的更新包以支持 Windows XP Target 功能。
但是面对没有源代码的项目或是无法迁移的项目,又想让其在 XP 下运行,可以通过修改 PE 头来解决此问题(本方法全球首发,秒杀一切)。
问题所在:
在新版VC编译出来的程序,不支持运行在 XP 之下,其根本原因是 PE 头中的最低系统版本限制。
我们可以使用 PE Explorer 程序查看。
我们可以看到,其操作系统版本号为 6.0,即其最低支持运行的系统为 Windows Vista,自然 XP 下无法运行。(附: Windows XP 为 5.1,2003 为 5.2)
也就是我们只要把 操作系统版本、子系统版本 这两项 同时修改为 5.1,就可以去掉 “不是有效的 Win32 应用程序” 问题 [前提是程序中不能有 Windows XP 以后才有的 API]。
解决方案:
既然是在 PE 头中,我们只要用一般的十六进制编辑器来修改即可。(我用的 FlexHex)。
首先打开样本工程,找到 PE 头位置:
然后把 06 00 00 (6.0) 修改为 05 00 01 (5.1)即可。
保存即可,这样程序就可以在 XP 下运行(一般来说,如果你用了高版本 API 的话那就没办法了)。
目前我已经用此办法将 VC2012 编译器 移植到了 XP 下(原发布在易语言论坛)。
移植实例:VC 2012 链接器 For XP 下载:
下载地址:点击去下载
Leave a Reply