为什么Windows 7 64位无法运行32位程序?

为什么Windows 7 64位无法运行32位程序?

据我了解,从 16 位到 32 位,架构并没有发生太大变化,那么为什么我们需要 XP 模式等才能在 Windows 7 64 位中运行 32 位应用程序?

还是我理解错了?

答案1

它可以很好地运行 32 位程序。但无法运行 16 位程序。

XP 模式是一种保险 - 如果某个软件无法在 7 上运行(32 位或 64 位 - 专业版及以上版本均提供 XP 模式),那么您可以在 XP 模式下运行它。我还没有遇到过这种情况,但这可能是针对那些“你可以从我垂死的手中夺走 XP”的人。

在大多数情况下,兼容模式就可以了

答案2

我希望这可以解释一下不兼容性:

微软决定在 64 位版本中加强对内核的控制。设备驱动程序对硬件的访问级别与内核相同,因此出于安全性考虑,64 位版本中更改了一些具体内容:

  • 驱动程序必须经过 Microsoft 签名才能加载。
  • 我不知道 32 位驱动程序在技术上是否可以与 64 位内核兼容(不太可能),但微软不会使用 64 位内核所需的密钥签署新的 32 位驱动程序。因此所有现有的 XP 32 位驱动程序都无法在 64 位 Vista/7 上运行。
  • 驱动程序不能覆盖或修补内核。

微软还改用了新的视频显示驱动程序模型 (LDDM),但保留了旧模型 (XDDM)。旧模型 XDDM 不支持 Aero。

有些程序会动态加载定制的设备驱动程序来完成任务。这些程序肯定无法在 Vista/7 上运行。

Microsoft 在 Vista/7 中更新了相当多的组件。这可能意味着这些组件的未记录行为会发生变化。依赖这些组件中的错误或未记录的 DLL 函数的程序也会有问题。

答案3

32 位程序在 64 位 Windows 下应该可以正常运行。

XP 模式适用于与 Windows Vista 和 Windows 7 不兼容的程序。

这篇 Ars Technica 文章了解更多信息。

随着 Windows Vista 的发布,这个问题真正达到了顶峰。Vista 与 XP 的兼容性非常好,但并不完美。微软在 Vista 上做了很多工作来加强它对攻击的防御能力(​​当然是 UAC,但也包括其他方面,比如禁止服务与用户交互),这些修改和改进,以及更新 Windows 的版本号等更普通的东西,合谋破坏了一些旧软件。

相关内容