Windows_01_Windows系统的中的32位和64位(System32和SysWOW64)

Posted 毛奇志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows_01_Windows系统的中的32位和64位(System32和SysWOW64)相关的知识,希望对你有一定的参考价值。

系列文章目录

文章目录


前言

现在的计算机系统都是64位了,如下:

System32和SysWOW64

对于64位的操作系统,打开 C:\\Windows 目录,有两个文件夹 System32 和 SysWOW64,如下:


System32中全部都是64位的程序的dll,而SysWOW64中全部都是32位的程序的dll。

为什么System32中全部都是64位的程序的dll?
很早的时候,还没有64位的时候,32的程序都安装在System32这个文件夹下,这没有问题,但是内核中的路径都是写死了System32这个路径,而64位的windows操作系统是直接在32位windows操作系统下移植的,由于修改内核代码风险极大,就沿用了System32的文件名。
所以,当我们在64位的windows操作系统上安装64位的程序的时候,就安装到了System32这个目录下。

为什么SysWOW64中全部都是32位的程序的dll?
SysWOW64 的全称是 System Windows on Windows 64 (其中的大写的 WOW 是 Windows on Windows 的简写),SysWOW64 这个目录在 32 位windows操作系统上是没有的,只有在 64位 windows 操作系统上才有,而且这个目录名的含义是 windows 上的 windows,这个目录存在的意义本来就是为了兼容32位程序的。就是说,新发布了64位的windows操作系统,需要在这个操作系统上,既能安装32位的程序,也能安装64的程序,所以在新发布的64位的windows操作系统上,留了一个目录 SysWOW64 ,用来安装 32 位的程序。

小结:

对于32位的程序:
32位的程序,在32的windows操作系统上运行,调用的就是System32目录下的程序,可以理解;
32位的程序,在64位的windows操作系统上运行,会自动重定向到SysWOW64目录下,并且连同注册表都会遵循这个规则,哪怕你写死调用路径,系统都会给你强制重定向到SysWOW64中。

对于64的程序:
64位的程序,无法在32位的windows操作系统上运行,可以理解;
64位的程序,在64位的windows操作系统上运行,调用的是System32目录下的程序。

regedit.exe


Program Files和Program Files(x86)

windows上安装桌面级软件的时候,默认的安装路径基本就是 C盘的ProgramFiles和ProgramFiles(x86),对于我们现在的64位的windows操作系统,Program Files是默认的64位软件安装位置(当然可以自己指定),Program Files(x86)是默认的64位软件安装位置(当然可以自己指定),如下:


总结

以上是关于Windows_01_Windows系统的中的32位和64位(System32和SysWOW64)的主要内容,如果未能解决你的问题,请参考以下文章

几个 Nt 函数在 Windows 7 x32 上返回 STATUS_WAIT_0

这个 Windows 故障转储是啥意思?

Windows系统下Eclipse搭建ESP32编译环境

求win7 纯净版32位和64位系统下载地址!!!

Windows下,如何获得微秒级时间

2017 极客 RE Windows_3