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

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

我有一个可执行文件,在 32 位 Windows 上运行时运行良好,但在 64 位 Windows 上运行时就会崩溃。

有什么方法可以强制它在 64 位机器上以 32 位模式运行?

我无法访问源代码。

答案1

您想要一个多技术性的答案?您可能可以使用一些 SDK 工具强制 exe 始终以 32 位运行,但这确实需要一些工作。

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

更复杂的是检查它是什么类型的 exe,然后自己修改它。这里的背景是了解直接使用 Windows API 的语言的编译代码在编译时由开发人员创建为 32 位或 64 位。如果不返回源代码,则无法更改这一点。

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

对于 .NET,您可以使用 SDK 工具来:

  • 验证应用程序是否为“AnyCPU”:。corflags myExe.exe使用 .NET SDK 中的实用程序读取 .NET 程序集的标题,对于 exe,将返回类似以下内容:
版本:v4.0.30319
CLR 标头:2.5
聚乙烯 : PE32
内核标志:0x20003
仅限:1
32位请求: 0
32 位参考: 1
已签名:0

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

  • 使用corflags/32BITREQ+选项将 exe 修改为仅 32 位。

答案2

如果你有 Windows 7 专业版(或更高版本),那么使用虚拟 XP 模式微软

这模拟了 32 位环境,并且已被证明对于运行一些旧的 16 位程序很有用

答案3

尝试了所有方法,但都没有用。但后来考虑将 gta iv 目录从 C/program files(x86) 移动到 C/program files,这样就可以了,因为 x86 适用于 32 位应用程序(我认为),但无论如何都可以。

答案4

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

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

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

这将强制应用程序作为 32 位进程而不是 64 位进程运行。

相关内容