我已经看到一些由我编写并使用 ml.exe 为 x86 组装的程序在我的 Win 7 x64 上运行良好。我相信这是因为哇技术。
但是,有些程序(不是我写的)无法运行。他们给出的错误是: 此文件的版本与您正在运行的 Windows 版本不兼容。检查您的计算机系统信息,看看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商
有什么办法可以修改这些程序的 EXE 以使其在 Win 7 x64 上运行。这些程序的根本区别是什么,使其与其他透明运行的程序不同。
它们实际上是 8 位或 16 位程序。Windows x64 在长模式下运行,不支持此类程序所需的虚拟 8086 模式。除了从源代码重新编译它们或在虚拟机中运行它们之外,没有办法让它们工作。
原因之一可能是 .NET 和本机库的组合。.NET 库在运行时编译为 x64(如果您没有明确指定 x86)并且本机库在 x86 模式下运行。它不能一起运行。
另一个原因是访问注册表。根据使用的 API,wow64 模式下的 x86app 可以转发到注册表的另一部分。如果注册表访问 API 不一致,就会出现问题。