在 64 位 Windows 系统中,C:\Windows\System32
目录存放的是 64 位的系统文件和动态链接库,这初看起来有些不符合直觉,但背后有其历史和兼容性方面的原因。
历史原因
早期的 Windows 系统是 32 位的,System32
这个名称在当时就已经确定,用于存放 32 位的系统核心文件和相关库。随着技术发展,64 位 Windows 系统出现,但为了保持对大量旧程序和脚本的兼容性,微软决定保留这个目录名称,不过在 64 位系统里它实际存放的是 64 位文件。
兼容性设计
为了让 32 位程序也能在 64 位 Windows 系统上正常运行,微软引入了 SysWOW64
目录(WOW 是 Windows on Windows 的缩写)。这个目录专门用于存放 32 位的系统文件和动态链接库。当 32 位程序在 64 位系统中运行时,系统会从 SysWOW64
目录加载所需的 32 位 DLL 文件,而 64 位程序则从 System32
目录加载 64 位 DLL 文件。
示例说明
假如你有一个 64 位的 OpenGL 程序,它依赖 64 位的 freeglut.dll
库。把 64 位版本的 freeglut.dll
放在 C:\Windows\System32
目录下,当程序运行时,系统就能从该目录找到并加载这个库,保证程序正常运行。如果是 32 位的 OpenGL 程序,则需要将 32 位的 freeglut.dll
放在 C:\Windows\SysWOW64
目录下。
总之,在 64 位 Windows 系统中,C:\Windows\System32
用于 64 位文件,C:\Windows\SysWOW64
用于 32 位文件,这种设计是为了兼顾系统升级和软件兼容性的需求。