为什么Windows 7 64位不能运行32位程序?

Osc*_*car 9 windows-7 64-bit 32-bit windows-xp-mode

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

还是我理解错了?

Jou*_*eek 16

它可以很好地运行 32 位程序。它不能运行 16 位程序。

XP 模式有点保险 - 如果特定软件无法在 7(32 位或 64 位 - XP 模式可用于专业版及以上版本)上运行,那么您可以在 XP 模式下运行它。这还没有发生在我身上,但可能是因为“你可以从我垂死的手中夺走 XP”的人群。

在大多数情况下,兼容模式会这样做

  • 有些应用程序会抱怨,但理论上没有理由不能运行 32 位应用程序。 (2认同)

Law*_*ceC 5

我希望这可以说明不兼容问题:

微软决定收紧 64 位版本的内核。设备驱动程序与内核具有相同级别的硬件访问权限,因此在 64 位版本中以安全的名义更改的一些特定内容是:

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

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

一些程序会动态加载定制的设备驱动程序来完成它们的任务。这些在 Vista/7 上绝对不起作用。

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