微软解释Win11仍保留MS-DOS时代8.3文件名规范:数十年兼容性包袱难以摆脱

假如程序是通过文件名与某个DLL建立链接,那么文件名变了的话,程序就找不到它了。

据科技媒体Windows Latest报道,微软在最新操作系统Win11 26H2中仍保留了MS-DOS时代的8.3文件命名规范,kernel32.dll、user32.dll和ntoskrnl.exe等核心系统文件至今沿用这一旧规则。微软方面解释称,保留该规范是出于兼容性考虑。

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时期,微软并未要求系统驱动器必须支持长文件名,部分原因在于使用漫游配置文件的企业可能依赖无法处理长文件名的服务器。直到Windows XP,长文件名才成为必需条件。即便进入21世纪,长文件名仍带来历史遗留问题:Windows会为每个长文件名生成短文件别名,若安装程序将shellstyle.dll复制到已存在shellstuff.dll的文件夹中,新文件很可能被命名为SHELLS~2.DLL。

对开发者而言,这一案例反映出操作系统底层设计的长周期约束。微软在推进新功能的同时,仍需为数十年前的接口决策保留兼容路径,这种取舍在企业级软件与基础软件领域并不罕见。

该文观点仅代表作者本人,企服科学平台仅提供信息存储空间服务。

赞 (0)
Meta修改商业服务条款,新增抓取客户内容用于AI训练的授权
上一篇 3小时前
Linux内核维护者峰会决定取消AI辅助代码声明要求
下一篇 3小时前

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部