为什么Windows 9x软件可以在Windows 7 64位上运行?

为什么Windows 9x软件可以在Windows 7 64位上运行?

多年来(Windows XP 推出后很长一段时间),我一直使用着一批旧的 Windows 9x 台式电脑。基本上,这些机器的硬件规格太低,无法升级到 XP(而且要花很多钱),所以我继续使用它们,使用它们的原始软件:各种 Windows 98SE 和 Windows ME 安装(全部以 32 位版本运行)。

事实上,我从未使用过 XP。Win9x 机器非常可靠,在 XP 和 Vista 出现和消失后,它们仍能正常工作。但经过一段时间,我最终不得不迁移到 Windows 7 64 位。

我不会做一些真正愚蠢的事情,例如询问为什么某个程序不能在 Win7 64 位上运行!:-)

无一例外,我之前在 32 位 Windows 98SE 上运行的所有软件都可以在 Win7 的 NT 64 位架构上开箱即用(可以这么说)。今天,我仍然使用各种此类软件,尤其是我经常使用的文字处理程序和 HTML 编辑器。

是否有技术原因导致我在 64 位 NT 上运行 Windows 9x 程序时从未遇到预期的困难?我曾被告知有关 Win7 上的“兼容性”设置,但从未在“兼容模式”下运行过程序。

我知道 Windows 7 将 32 位和 64 位软件保存在不同的位置,并以不同的方式处理它们:但我预料这与为 Windows 7 编写的 32 位和 64 位程序有关。

我很惊讶 Windows 98 32 位程序似乎与 Windows XP/Vista/7 32 位程序完全兼容,我想了解为什么会这样。它们之间真的没有区别吗?

此外,许多旧的 Windows 9x 程序都是可移植的。我习惯将它们放在 USB 记忆棒上或 Windows 7 桌面上,然后直接运行它们。我没有遇到任何问题。即使它们不是从 Program Files 文件夹运行的。同样,我想从技术角度了解为什么操作系统不反对这样做?

我是否在做不安全的事情?Windows 7 操作系统似乎非常稳定:但我想知道我是否要求它做我不应该做的事情。

答案1

您一定是第一个抱怨的用户,因为他/她根本没有遇到任何问题。;)

虽然主流媒体不遗余力地在应用程序兼容性方面抹黑 Windows,但事实上,微软在向后兼容性方面投入了大量资金,为 Windows 98 编写的绝大多数应用程序仍然可以在 Windows 7 上使用。此外,Windows 7 是微软有史以来开发的最稳定的操作系统。毫无疑问,Windows 7 和 Windows 98 之间的差异很大,但:

  • Windows 98 利用了丰富的 Windows API,微软并没有特意重写这些 API!例如,在屏幕上绘制一个矩形创建一个窗口或者显示菜单栏还是一样。
  • Windows 7 已实施旨在解决旧版软件兼容性问题的措施。其中之一就是 UAC 虚拟化。Windows 98 应用程序将其应用程序数据写入其安装文件夹。Windows 7 不再允许这样做;但是,对于旧版应用程序,UAC 虚拟化将应用程序安装文件夹之外的数据写入操作重定向到%LOCALAPPDATA%\VirtualStore

Windows 98 时代的应用程序不再适用于 Windows 7,包括 16 位应用程序(不能在 64 位 Windows 上运行,但有时可以在 32 位 Windows 上运行)以及依赖于黑客或神秘的旧版操作系统服务的应用程序。

答案2

您在这里问了很多问题,有些问题相当复杂,但基本答案是“微软付出了大量努力来保持向后兼容性”。老实说,更好的问题可能是“为什么它不起作用?”,因为 Win9x 和 NT(包括 Win7)都使用 Win32 API 和 x86 指令集(AMD 对英特尔 x86 指令集的 64 位扩展是向后兼容的;以 64 位模式运行的“x64”处理器也可以运行 32 位程序)。

最有可能的原因就是访问控制。Win9x 根本不支持任何类型的访问控制;任何程序都可以做任何它想做的事情。如果恶意使用,编写恶意软件就变得非常容易。如果非恶意但偷懒地使用,这意味着许多开发人员编写程序时,程序会将数据写入安装文件夹。出于多种原因,这是一个坏主意,其中最重要的原因是安全性;在“真实”操作系统上,安装文件的默认位置不允许非管理员写入文件,并且您应该以非管理员身份运行,除非安装/更新软件。

当然,整个“写入你正在运行的目录”的事情是简单的(我确实说过开发人员很懒……)是的,它还使软件变得“便携”,因为您可以将它放在闪存驱动器上(这通常也完全缺乏访问控制,因为它们使用 FAT 文件系统的变体,而 FAT 不支持文件权限)。以这种方式运行软件比将其安装到访问受限区域并从那里运行它(作为非管理员用户)更不安全,但只要您不与其他人共享计算机,它可能就没问题。

至于为什么操作系统不反对......你为什么期望它反对?Program Files不是一个特别的文件夹,它只是按照惯例安装程序的地方。(这实际上是一个非常愚蠢的惯例,因为如果你将某些软件安装到路径中有空格的位置,它会崩溃,但也许微软想确保开发人员不会完全懒惰……)唯一特别的是Program Files,在 64 位系统上,当 32 位进程请求“Program Files”文件夹时,它们实际上会被定向到该Program Files (x86)文件夹​​。除此之外……操作系统允许您从您(用户)有权访问的任何地方运行程序。有些程序故意安装在您的用户配置文件中,或安装在驱动器根目录上的自己的文件夹中(C:\Python27这是开发人员机器上常见的文件夹)。这些程序运行良好。

相关内容