查看: 380|回复: 0
收起左侧

[系统相关] Win11 为何仍保留 MS-DOS 时代的文件名?微软解释:数十年兼容性包袱难以摆脱

[复制链接]
anyangmo
发表于 昨天 08:50 | 显示全部楼层 |阅读模式
Win11 为何仍保留 MS-DOS 时代的文件名?微软解释:数十年兼容性包袱难以摆脱

IT之家 10 月 18 日消息,据科技媒体 Windows Latest 今天报道,Win11 26H2 是微软今年最新的操作系统,但其中的部分核心文件,如 kernel32.dll、user32.dll 和 ntoskrnl.exe 等,看起来像是为 MS-DOS 编写的。这些文件遵循 8.3 旧命名规范,微软至今保留是为了兼容性。


据报道,8.3 是 MS-DOS 时代使用的文件命名规则:文件名在句号前最多只能有 8 个字符,句号后最多 3 个字符。且所有文件名只能使用 ASCII 字符,不能包含空格,也不允许出现多个句号。System32 文件夹里,一些最古老的文件仍然遵循这些规则,而 Windows 安全中心等新组件就没有这种包袱。


同时,MS-DOS 会以大写形式显示文件名,因此 Windows 处理文件时默认不分大小写,kernel32.dll 和 KERNEL32.DLL 实际上指的是同一个东西。


至于限制为什么是 8 个字符和 3 个字符,微软资深员工 Raymond Chen 称这是 CP/M 沿袭的规则。不过他本人并不知道 CP/M 为什么选中这两个数字。毕竟 CP/M 的目录格式中有两个保留字节,理论上可以将文件名长度扩展至 10.3。


此外 Raymond Chen 推测,微软数十年没有更改文件名的原因在于,假如程序是通过文件名与某个 DLL 建立链接,那么文件名变了的话,程序就找不到它了。


到了 Windows 95 ,微软也没有要求系统驱动器必须支持长文件名,部分原因在于,使用漫游配置文件的企业可能依赖无法处理长文件名的服务器。直到 WinXP,长文件名才成为必需条件。


哪怕到了 21 世纪之后,长文件名还是带来了历史包袱,Windows 可以为每个长文件名生成短文件别名,如果安装程序要将 shellstyle.dll 复制到一个已经存在 shellstuff.dll 的文件夹中,新文件很可能会被命名为 SHELLS~2.DLL。





原文地址:https://www.ithome.com/1/014/601.htm



您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2026-10-20 14:20 , Processed in 0.093557 second(s), 3 queries , Redis On.

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表