
2026 年 10 月 19 日消息,科技媒体 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。
| 留言与评论(共有 条评论) |