据科技媒体 Windows Latest 10 月 18 日报道,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。
“通过爱游戏的一站式平台,我不用再切换多个网站,省时又准确。” — 李娜,资深球迷


发表评论