2012-09-27 09:21:43 +0000 2012-09-27 09:21:43 +0000
18
18

如何在64位机器上以32位模式运行exe?

我有一个可执行文件,在32位Windows上运行时工作正常,但在64位Windows上运行时就坏了。

有什么办法可以让它在64位机器上以32位模式运行?

我没有访问源代码的权限。

答案 (4)

16
16
16
2012-09-27 09:49:02 +0000

你想要一个多么技术性的答案?你也许可以通过一些SDK工具强制exe始终运行在32位,但这确实需要一点工作。

简单的答案是从32位进程启动(例如,使用%SystemRoot%\SYSWOW64\cmd.exe启动)。

比较复杂的是检查是什么类型的exe,然后自己修改。这里的背景是要明白,直接与Windows APIs工作的语言的编译代码在编译时被开发者创建为32bit或64bit。然后,如果不回到源代码中,就无法更改。

然而越来越多的应用程序是通过虚拟化层来编写的,这使得编写应用程序变得更加容易。常见的有两种:.NET和Java。我不清楚Java,只知道强制安装正确的Java运行时可以解决问题。

对于.NET,你可以使用SDK工具来。

  • 验证应用程序是否为 “AnyCPU”: corflags myExe.exe. 使用.NET SDK中的工具来读取.NET程序集的头,对于一个exe来说,会返回类似这样的结果:

  • 验证应用程序是否为 “AnyCPU":32BITREQ

Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

AnyCPU告诉我这是corflags 因为不需要32位。

  • 使用/32BITREQ+与其0x6&选项来修改exe,使其仅为32位。
3
3
3
2012-09-27 19:06:35 +0000

如果你有windows 7专业版(或更高),那么使用微软

的虚拟XP模式,这可以模拟(?)32位的环境,事实证明它对一些旧的16位程序的运行很有用。

0
0
0
2018-11-29 21:07:43 +0000

实际上有一个更简单的方法来适应这个问题(不是长期的解决方案)。

将应用程序 “corflags.exe "放到\windows\system32文件夹中。以管理员身份打开命令行并输入…

corflags "exe的路径和名称” /32BITPREF32+

这将迫使应用程序以32位进程的方式运行,而不是64位。

0
0
0
2014-04-07 14:48:39 +0000

尝试了一切,但没有任何工作。但后来想把GTA IV目录从C/程序文件(x86)移到C/程序文件,它的工作,因为x86是32位的应用程序(我想),但工作还是。