我有一个可执行文件,在32位Windows上运行时可以正常工作,但是在64位Windows上运行时会中断。
有什么办法可以迫使它在64位计算机上以32位模式运行?
我无权访问源代码。
我有一个可执行文件,在32位Windows上运行时可以正常工作,但是在64位Windows上运行时会中断。
有什么办法可以迫使它在64位计算机上以32位模式运行?
我无权访问源代码。
Answers:
您想要一个技术性的答案吗?您可能可以通过一些SDK工具强制exe始终运行32位,但确实需要一些工作。
简单的答案是从32位进程启动(例如,%SystemRoot%\SYSWOW64\cmd.exe
用于启动)。
比较复杂的是检查它是哪种exe,然后自己修改。这里的背景是要理解,直接与Windows API配合使用的语言的已编译代码在开发时由开发人员创建为32位或64位。然后,如果不返回源代码,就无法更改此设置。
但是,越来越多的应用程序是通过虚拟化层编写的,这使编写应用程序更加容易。有两种常见的:.NET和Java。除了知道强制使用正确的Java运行时安装来解决问题外,我不确定Java。
对于.NET,您可以使用SDK工具执行以下操作:
corflags myExe.exe
。使用.NET SDK中的实用程序读取.NET程序集的标头,对于exe,将返回以下内容:版本:v4.0.30319 CLR标题:2.5 PE:PE32 CorFlags:0x20003 ILONLY:1 32位请求:0 32BITPREF:1 签名:0
在32BITREQ
告诉我,这是AnyCPU
因为32位不是必需的。
corflags
与它的/32BITREQ+
选项一起使用可将exe修改为仅32位。%SystemRoot%\SYSWOW64\cmd.exe
并且以相同的方式失败-显示错误消息-当我在TaskManager中签入时,我的exe进程未显示为32位进程
SYSWOW64\cmd.exe
仍然会使它作为64位进程运行(我刚刚尝试过)。