为什么有些为 x86 编译的程序不能在 x64 下运行,而有些则可以

发布于 2024-10-05 03:54:52 字数 271 浏览 0 评论 0原文

我发现一些由我编写并使用 ml.exe 为 x86 汇编的程序在我的 Win 7 x64 上运行良好。我相信这是因为Wow技术。

但是,有一些程序(不是我编写的)无法运行。他们给出的错误是: 此文件的版本与您运行的 Windows 版本不兼容。检查你的计算机系统信息,看看你是否需要x86(32位)或x64(64位)版本的程序,然后联系软件发行商

有什么办法可以修改这些的EXE程序使其在 Win 7 x64 上运行。这些程序与其他透明运行的程序有什么根本区别?

I have seen that some programs which were written by me and assembled for x86 using ml.exe run fine on my Win 7 x64. I believe this is because of Wow technology.

However, there are some programs (not written by me) which don't run. They give the error that:
The version of this file is not compatible with the version of Windows you're running. Check you computer system infromation to see whether you need an x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher

Is there any way I can modify the EXE of these programs to make it run on Win 7 x64. What is the fundamental difference in these programs which make it different from other programs which run transparently.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

<逆流佳人身旁 2024-10-12 03:54:52

它们实际上是 8 位或 16 位程序。 Windows x64 在长模式下运行,该模式不支持此类程序所需的虚拟 8086 模式。除了从源代码重新编译它们或在虚拟机中运行它们之外,没有办法让它们工作。

They're actually 8- or 16-bit programs. Windows x64 runs in Long Mode, which does not support Virtual 8086 Mode, required for such programs. There is no way to make them work short of recompiling them from source or running them in a virtual machine.

别闹i 2024-10-12 03:54:52

原因之一可能是 .NET 和本机库的组合。 .NET 库在运行时编译为 x64(如果未显式指定 x86),本机库在 x86 模式下运行。它不能一起运行。

另一个原因是访问注册表。根据使用的 API,wow64 模式下的 x86app 可以转发到注册表的另一部分。如果注册表访问 API 不一致,则可能会出现问题。

One reason can be combination of .NET and native libraries. .NET libraries are compiled in runtime as x64 (if you don't specify explicitly x86) and native libraries run in x86 mode. it cannot run togehther.

Another reason is access to registry. Depending on used API, x86app in wow64 mode can be forwarded to another part of registry. If the registry access API is inconsistent, it can make a problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文