关于Windows中System32及其相关文件夹的简单辨析

您所在的位置:网站首页 没有system32文件夹 关于Windows中System32及其相关文件夹的简单辨析

关于Windows中System32及其相关文件夹的简单辨析

2024-01-19 14:03| 来源: 网络整理| 查看: 265

很多人都觉得,“System32”就是存放32位系统文件的。这个误区已经存在了很久,我认为这是望文生义所导致的。

首先我们需要指出,System32文件夹在不同位数、不同架构的操作系统,所存放的内容是不一样的。

图源:minitool.com

32位操作系统:里面存放的是32位系统文件。

顾名思义,很好懂吧?

不过这么一句话就结束这个部分了吗?

相信很多稍微懂一些的朋友肯定要问了,32位系统还有一个16位子系统,用来兼容DOS乃至早期版本Windows程序,这些文件在哪里呢?在“System”文件夹当中。

悄悄喵一句:这里面的东西最迟更新到Windows 3.2。

64位操作系统:System32里面存放的是64位系统文件。

看到这很多人就要问了,微软为啥不改个名,怎么还叫System32?

嗯,说白了还是处于兼容性考量,程序需要调取.NET Framework或者VC运行库,都需要到System32下面读取文件,大家肯定见过这样的提示框:

图源:AutoDesk帮助

如果要求程序开发者全部把调取文件的路径改掉,他们肯定不乐意,而且即使改了,问题也会有很多,于是微软索性就继续用这个名字了。

所以,在64位系统中,64位的文件还在System32里面。

那么有些同学又要问了:SysWoW64又是个啥?为啥名字带一个64?

嗯,问得好。SysWoW64是64位系统中的32位子系统,这个子系统(WoW64)的官方名称是Microsoft Windows-32-on-Windows-64。

翻译成白话,SysWoW就是在64位系统中,运行32位程序的一个兼容层。如果你觉得名字怪怪的只能怪微软了。

简单介绍一下:这是2007年微软推出的一项技术,通过Wow64Cpu.dll的转译让32位程序在64位系统上运行,然后将32位应用程序或系统组件需要的动态链接库放入SysWoW64文件夹内,在注册表内新建Wow6432Node项单独存放32位的相关注册表,以此与64位的系统文件和注册表隔离开来,系统会通过Wow64.dll自动重定向32位程序请求的动态链接库(DLL)的路径到SysWoW64。优点很明显,它就像一个沙盒一样,但是这不意味着你可以随意删除或者更改它,它仍然与Windows保持着较高的集成度。*

注:如果未来的x86_64架构移除了32位指令集,32位程序仍然可以在Windows上运行。

一目了然,不言而喻

*在Windows 11 Build 22621以后,系统对SysWoW64的依赖似乎减轻了,对其进行一定的替换和更改不会再影响到系统本身的运行,但你的32位程序还是会死翘翘的。

Windows RT:只存在ARM32架构的系统文件

Windows 10 版本1709及以后:System32下存放ARM64架构的系统文件,SysArm32下存放ARM32的系统文件,SysWoW64存放的是标准x86架构的系统文件。

系统会使用xtajit.dll对x86指令进行翻译。

关于ARM架构对x86_64的兼容:微软没有选择新开文件夹,而是把ARM64的文件动了动手脚,把自己模仿成x86_64,骗过程序进行调用,称为ARM64EC,微软还塞了些还有原始x86_64的内容,与ARM64EC配合使用,配合使用的整个体系叫做ARM64X,它们都在System32下,并且,文件还是那个文件,只是把东西装进去了而已,不同架构的的App调用其中不同的内容,就像一幅图片,有的人看见兔子,有的人看见鸭子。

不过,也有其对应的xtajit,也就是xtajitx64.dll。

微软官方图片

好了,相信这篇文章会加深你对Windows 系统文件的认识,如果你觉得我写得不错还请多多支持。本文用到了部分网络资源,如果认为有我不应使用的内容,请提出交涉。

参考资料:

Arm64X PE 文件 | Microsoft Learn

Windows11 操作系统 SysWOW64 文件夹的作用 - 知乎 (zhihu.com)

WOW64 实现详细信息 - Win32 apps | Microsoft Learn



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3