正文内容 评论(0)
快科技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的名字比改几个页签破坏面大得多,而且不会让电脑更快或更安全。
- 热门文章
- 换一波
- 好物推荐
- 换一波
- 关注我们
-
微博:快科技官方
快科技官方微博 -
今日头条:快科技
带来硬件软件、手机数码最快资讯! -
抖音:kkjcn
科技快讯、手机开箱、产品体验、应用推荐...



