原因:确保向后兼容
什么是向后兼容性?
向后兼容是一个术语,用于描述与先前版本的软件或操作系统兼容的软件或硬件。如果没有向后兼容性,则与一个计算机处理器或操作系统一起使用的程序将停止与新版本一起使用。 VLC媒体播放器的32位版本可以在64位Windows操作系统上无缝运行,或者为Windows XP设计的PC游戏可以在Windows 10上毫无问题地运行,这都归功于向后兼容性。
但是64位Windows操作系统如何确保向后兼容性?
Microsoft确保32位(x86)和64位(x64)应用程序都能够在64位Windows操作系统上运行。当32位程序在64位Windows上运行时,将调用32位仿真器来处理32位程序。仿真器将使32位应用程序认为它在32位Windows上运行,并且64位Windows上的程序也可以访问在32位Windows上可以访问的相同功能。
64位Windows具有程序文件文件夹和Windows系统文件夹(系统目录)的两个不同版本。一个版本适用于32位文件,另一版本适用于64位文件。下表中显示了这些文件夹的名称及其适用的位数:
Folder | Bitness | Description |
---|---|---|
System32 | 64 | Windows system folder (system directory) for 64-bit files |
SysWow64 | 32 | Widows system folder (system directory) for 32-bit files |
Program Files | 64 | Folder for 64-but program files |
Program Files (x86) | 32 | Folder for 32-bit program files |
现在,出现了一个问题,为什么存储名为System32的64位应用程序所需的二进制文件的文件夹,为什么Microsoft选择命名包含32位应用程序“ SysWOW64”(Windows 64上的Windows)所需文件的文件夹?
好吧,这当然似乎是不合逻辑的,但是确实有一个解释。它与兼容性有关。最初,Microsoft打算重命名该文件夹,但选择不重命名,因为许多开发人员已经在其应用程序源代码中对系统文件夹的路径进行了硬编码。它们在文件夹路径中包含“ System32”。为了保持兼容性,如果将应用程序转换为64位代码,则64位系统文件夹仍将命名为System32。
但是,对系统路径进行了硬编码并在64位Windows中运行的32位应用程序呢?您可能会想,他们如何在不更改程序代码的情况下找到新的SysWOW64文件夹。答案是,仿真器透明地将对System32文件夹的调用重定向到SysWOW64文件夹,因此,即使该文件夹被硬编码到System32文件夹(如C:\ Windows \ System32),仿真器也将确保使用SysWOW64文件夹代替。因此,相同的源代码(包含带有System32文件夹的路径)可以被编译为32位和64位程序代码,而无需进行任何更改。
总结起来,Microsoft希望取消该文件夹的名称“ System32”,但不要这样做,否则所有Windows 64位版本(自Windows 7起)将无法运行大量的应用程序和视频游戏。