Windows中的“ System32”和“ SysWOW64”文件夹有什么区别?
在Windows的64位版本上,您有两个单独的“程序文件”文件夹。但这还不止于此。您还具有两个单独的系统目录,其中存储了DLL库和可执行文件:System32和SysWOW64。尽管有名称,但System32充满了64位文件,而SysWOW64充满了32位文件。那有什么呢?
什么是System32?
有关的:什么是DLL文件?为什么我的PC上没有DLL文件?
System32目录包含Windows系统文件,程序使用的.DLL库文件和Windows的.EXE程序实用程序。尽管您在此处找到的大多数文件都是Windows操作系统的一部分,但第三方软件程序有时也会将其自己的DLL文件也安装到此文件夹中。
系统上运行的应用程序可以安装在Program Files文件夹中或其他位置,但是它们通常从System32文件夹中加载系统范围的库。
分离32位和64位库
有关的:Windows中的“程序文件(x86)”和“程序文件”文件夹有什么区别?
在Windows的64位版本上,您有一个C:\ Program Files文件夹,其中包含64位程序及其文件,以及一个C:\ Program Files(x86)文件夹,其中包含32位程序及其文件。分离这些文件很有用,因为64位程序需要64位DLL文件,而32位程序需要32位DLL文件。
如果32位程序要加载所需的DLL文件,找到64位版本并尝试加载它,则它将崩溃。通过将64位和32位软件分为两个不同的Program Files文件夹,Windows确保它们不会混淆并不会引起问题。
但是,并非所有DLL文件都存储在程序文件中。 Windows随附的许多系统范围的库都存储在C:\ System32中,并且某些程序还在此处转储其自己的库文件。因此,就像Windows具有独立的32位和64位Program Files文件夹一样,它也具有System32文件夹的独立32位和64位版本。
System32和SysWOW64
在32位计算机上,所有32位程序都将其文件存储在C:\ Program Files中,并且系统范围的库位置为C:\ System32。
在64位计算机上,64位程序将其文件存储在C:\ Program Files中,并且系统范围的C:\ Windows \ System32文件夹包含64位库。 32位程序将其文件存储在C:\ Program Files(x86)中,并且系统范围的文件夹为C:\ Windows \ SysWOW64。
这绝对是违反直觉的。尽管名称中有“ 32”,但System32文件夹包含64位库。而且,尽管名称为64,但SysWOW64文件夹仍包含32位库-至少在64位版本的Windows上。
通常,您不需要知道这一点。您使用的Windows操作系统和程序会自动将其文件放置在正确的位置,并使用正确的文件夹。但是,如果您需要在正确的位置手动安装DLL文件或查找安装位置(这是非常罕见的),则需要知道哪个是哪个。
WOW64,解释
有关的:为什么大多数程序在64位版本的Windows上仍为32位?
名称中的“ WOW64”部分是指Microsoft的“ Windows 64位上的Windows 32位”软件,它是操作系统的一部分。这使Windows可以在64位版本的Windows上运行32位程序。 WoW64重定向文件访问以确保程序正常运行。
例如,如果您在64位版本的Windows上安装了32位程序,并且试图写入C:\ Program Files文件夹,则WoW64会将其指向C:\ Program Files(x86)。而且,如果要访问C:\ Windows \ System32文件夹,WoW64会将其指向C:\ Windows \ SysWOW64。 Windows使用文件系统重定向器执行此操作。
所有这些都会在后台自动透明地发生。该程序甚至不必知道它在64位操作系统上运行,该操作系统允许较早的32位程序在Windows 64位版本上运行而无需进行修改。 WOW64还重定向注册表访问,确保64位和32位程序的注册表分别位于不同的区域。
那么,为什么System32是64位的,而SysWOW64是32位的呢?
所有这些使我们回到百万美元的问题:为什么“ System32”文件夹是64位而SysWOW64是32位?
答案似乎是许多32位应用程序都经过硬编码以使用C:\ Windows \ System32目录。当开发人员针对Windows 64位版本重新编译这些应用程序时,他们继续使用C:\ Windows \ System32目录。
Microsoft并没有重命名目录并迫使开发人员转移到新目录,而是破坏了该过程中的许多应用程序,而是保留了“ System32”作为标准系统库目录。他们为在WoW64层下运行的应用程序创建了一个新的库目录,他们将其命名为“ SysWOW64”。当您以这种方式考虑时,名称更有意义。
是的,名称中现在带有“ 32”的目录现在是64位,这有点愚蠢。也许微软应该在90年代将其命名为C:\ Windows \ System32时就已经看到了。但是,尽管更直接的命名方案会很好,但是值得一堆程序破坏并为开发人员创建更多工作而奋斗。这意味着在可预见的将来,我们将继续使用System32和SysWOW64。