64位windows为什么不把system32改成system64 ?

论坛 期权论坛 期权     
匿名用户1024   2021-5-31 04:34   10186   5
以前的system32变成了现在的sysWOW64 , 现在的system32其实是存放64位程序的,好别扭啊。
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-5-31 04:34:14
关于为什么不改成system64然后在64bit时重定向system32到system64的问题。

有一个原因。这样做的话在kernel mode(驱动)里面的代码也可能需要做redirection,因为有些驱动可能只是重新编译了成64bit而还在使用system32这个名字。但驱动的情况就太模糊了,你怎么知道当前的上下文中这个驱动到底是需要做redirection还是真心想要访问32bit的system32目录?如果不做redirection那么万一那驱动硬编码了怎么办?

而原来的做法反正32bit的驱动程序本来就不能在64bit Windows上运行,所以redirection只发生在user mode。

另一个原因,redirection不光是在system32发生,其他一些目录也会有,比如windows\regedit.exe会在32bit下被redirect到windows\syswow64\regedit.exe。如果按照system64的做法,那么你在windows目录下面到底放32bit的regedit.exe还是64bit的呢?如果放64bit的话那么就要在system32下面也加一份regedit.exe并且在32bit程序里redirect,而这本来是没有的。结果就是无论32bit还是64bit的程序都会做redirection,太复杂了。

总之采用system64的方式会使得情况更为复杂。
3#
有关回应  16级独孤 | 2021-5-31 04:34:15
不修改是为了保证兼容性, 因为历史上有无数的呆逼获取这个路径的时候没有用API, 直接硬编码的System32, 为了保证这些烂程序的移植, 只好保留这个路径名
4#
有关回应  16级独孤 | 2021-5-31 04:34:16
因为你分词分错了。SysWOW64的正确分词是Sys WOW64,而不是SysWOW 64。WOW64的完整写法是Windows On Windows64。

至于System32为什么不叫System64,是因为兼容性。改了很多程序会挂,甚至不乏知名软件。
5#
有关回应  16级独孤 | 2021-5-31 04:34:17
因为许多传统的行业软件自从开发完成,就再也没更新过。

微软Windows3.1崩溃迫使巴黎奥利机场短暂关闭
6#
有关回应  16级独孤 | 2021-5-31 04:34:18
请参见:
为什么很多时候感觉国产软件不爱用 Program Files 目录? - 真不很知名的回答
其中提到了缘由:
顺便科普一下System32的这个32到底是啥。

x86-64的CPU环境下,“32位”可以指代的东西很多,比方说有64位操作系统模式下的32位兼容模式,有32位操作系统保护模式下的32位保护模式,有虚拟8086模式的32位支持,还有32位实模式。所以此时一个32位到底指什么成了一个巨大的问题。换句话说,32位这个词在x86-64这个大语境下是没有准确含义的。

如果要准确地表达这个目录所包含的二进制到底是哪种,应该使用x86和x64这样的指令集名称来说明,也就是如Program Files (x86)这样的。

但是要把System32给改成System (x86)就太麻烦了,有太多驱动程序和软件依赖这个目录名(微软的历史兼容包袱嘛,大家都知道)。于是,微软决定继续沿用System32这个名字来放系统二进制文件,也就是说这里System32成了一个完整的名字,它的子部分不再有意义(因为反正拆开了也很难说清楚意义)。然后用SysWOW64目录来存放需要用WOW64子系统才能运行的二进制。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP