虽然我的理解是没有一个根本原因为32位硬件/操作系统编写的程序不能在64位硬件/操作系统上运行,但实际上,我发现很多程序都是针对32位版本的Windows而不是适用于64位版本的Windows.例子包括许多流行的安全实用程序(大多数产品来自Norton和Check Point的Zone Alarm)和几款游戏(我一直试图让侠盗猎车手4运行几周,但无济于事 - 当然,这可能与GTA4相关的任何其他问题有关,但这既不在这里也不在那里.
我听说程序的不兼容可能是因为不想从"Program Files(x86)"文件夹运行这么简单,但是还有什么其他原因?为什么为32位系统编写的病毒扫描程序或防火墙不能在64位系统上运行?当一切理论上都向后兼容时,为什么游戏不会运行?
这个帖子有很多错误的信息.
在64位窗口上运行32位应用程序时:
当应用程序尝试安装内核模式驱动程序时,会出现大多数兼容性问题.无法在64位操作系统上安装32位驱动程序.这肯定是防火墙的问题.它试图挂钩到TCP/IP驱动程序堆栈.
没有仿真器!32位目标代码由cpu完全本机地全速执行.
不支持旧的16位代码.这打破了很多安装人员.
访问正确的文件夹通常不是问题.当32位程序打开文件时,比如%windir%\ system32 \,操作系统会自动将其重定向到%windir%\ syswow64.对于注册表的某些部分也是如此.这里有一些潜在的陷阱,但它们通常是假设各种WINAPI Get ... Directory()函数返回它们在Windows 95中执行的相同字符串.
无论是10年前还是昨天编译,那么C/C++指针仍然是32位(4字节)和所有假设的代码 - 包括SendMessage()! - 仍然有效.在您开始转换为64位编译器之前,8字节指针问题不会出现.