为什么某些为x86编译的程序不能在x64下运行,而有些则是这样做的

我已经看到,我写的一些程序,并使用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不一致,则可能会造成问题。