驱动之家 昨天
Win11核心文件还在用MS-DOS命名规则!微软:不能改、一改就全崩
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

快科技 10 月 19 日消息,在 Windows 11 26H2 的 System32 文件夹里,kernel32.dll、user32.dll、ntoskrnl.exe 等核心文件至今沿用 MS-DOS 时代的 8.3 命名规则。

8.3 是 MS-DOS 的文件命名规则,即点号前最多 8 个字符,点号后最多 3 个字符扩展名,最长 12 个字符,且只能用 ASCII 字符,不能含空格,不能有多个点号。

MS-DOS 时代文件名全大写显示,Windows 默认不区分大小写,kernel32.dll 和 KERNEL32.DLL 是同一个文件。

至于为什么是 8 和 3,在 Windows 工作了 30 多年的工程师 Raymond Chen 曾在 2009 年博客中解释,这是 CP/M 的遗产。

CP/M 是 Gary Kildall 1974 年为早期微型计算机开发的操作系统,MS-DOS 为了兼容 CP/M 连文件名一起继承了。

有意思的是 Chen 自己也不知道 CP/M 为什么选了 8 和 3,他注意到 CP/M 目录格式里有两个保留字节,理论上可以扩展到 10.3,猜 8 只是个方便的数字。

目前 Windows 11 的 NTFS 支持最长 255 个字符的长文件名,但核心系统文件不改名 Chen 在 2007 年博客中梳理了几条实际原因。

最明显的一条是 DLL 一旦被程序链接就不能改名,程序按文件名找文件,假如微软明天把 user32.dll 改名,几十年积累的 Windows 应用全去找一个不存在的文件。

在 Windows 95 的时候,微软还不要求系统盘支持长文件名,因为部分使用漫游配置文件的企业依赖不支持长名的服务器,所以每个系统文件必须符合 8.3。

直到 Windows XP 长名成了标配,短名也没消失,Windows 会为每个长名生成短别名,如果安装程序要把 shellstyle.dll 复制到一个已有 shellstuff.dll 的文件夹,新文件大概率变成 SHELLS~2.DLL。

Chen 给出的最后一条理由最让人信服:"8.3 命名的问题都已被充分理解并可控,换成长名只会带来一整套新问题。"毕竟改 kernel32.dll 的名字比改几个页签破坏面大得多,而且不会让电脑更快或更安全。

【本文结束】如需转载请务必注明出处:快科技

责任编辑:黑白

智客推

智客推

ZAKER 智客推 GEO | AI 时代的品牌认知解决方案

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

ms-dos 微软 windows 遗产 工程师
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论