为什么 Windows 10 禁止使用某些文件名,例如 aux.mp3 或 con.jpg

Windows 10 仍然不允许您使用某些文件名,例如 aux.mp3、con.txt,甚至 prn.doc。 “仍然不”严格,因为这种限制实际上可以追溯到 CP/M(MS-DOS 之前的操作系统)中引入的概念 - 该公司随后在每个版本的 Windows 中采用了约定和保留文件名列表,使每个版本向后兼容。这项工作可能看起来令人畏惧,因为这些被禁止的文件名的原因在 2018 年已经过时了……

无论其版本如何,Windows 都不允许您随机命名文件名。一般来说,最广为人知的限制涉及禁止的特殊字符列表:<、>、:、“、/、\、|、?、*。还禁止以空格或句点结尾文件名。考虑到 Windows 解释文件路径的方式,可以理解的限制 - 例如,反斜杠通常被解释为移动到更高的文件夹树级别。其他角色可能会引起安全漏洞– 例如,可能允许通过文件名注入代码。

由于 1974 年以来的过时概念,Windows 10 保留了某些文件名:以下是列表

但还有另一个限制,但鲜为人知,因为它存在的原因如今更加模糊。事实上,有一个单词列表永远不能在文件名中使用,无论其扩展名如何:

  • PRN
  • 零点
  • COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9
  • LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9

Windows 不区分大小写,因此如果您调用 LPt6.doc 文件,Windows 将显示本文插图中所示的错误消息:指定的设备名称无效。您可以自己尝试一下:Windows 资源管理器永远不会让您使用这些名称之一创建或重命名文件。我们的同事来自如何极客解释说,这个惊人的限制可以追溯到… 1974 年的概念。当时,CP/M OS 采用了 UNIX 系统的一个特征(在 Linux 中仍然存在):一切,包括外围设备,都是文件。

因此,当我们打印文件时,具体来说,我们将其“保存”在打印机上。换句话说,我们创建了一个 PRN: 或 AUX: 文件,例如包含要打印的文本。在 CP/M 中,每个应用程序都可以有自己的语法,因此操作系统通常不会以与其他文件名不同的方式处理某些文件名。 MS-DOS 的第一个版本采用了这个概念,但它并没有允许每个应用程序使用不同的语法,而是创建了一个全局语法,允许将数据发送到不同的 PC 设备。因此,这些保留的文件名对于与设备进行通信是必要的。

随后,随着 MS-DOS 的每个新版本,该系统都因向后兼容性问题而被采用。 Windows 95 是在 DOS 之上构建的,因此继承了这些限制。 Windows NT 不再构建在 DOS 之上,但 Microsoft 已使其向后兼容包含此限制的 Windows 95/98 应用程序。 Windows 10 仍然基于 Windows NT,这解释了为什么保留文件名列表仍然存在。然而,我们可以想知道这种向后兼容性在 2018 年(即引入此限制 40 年后)是否有意义:大多数使用此功能的程序都是 16 位程序,无论如何都不会在 Windows 10 中启动。

此外,这些文件在Windows 10中不再真正有用,并且不受NTFS文件系统的禁止,仍然可以使用Cygwin等第三方程序创建它们,而不会造成丝毫错误。尽管如此,当微软最终决定清理这种陈旧的语言时,还有什么好奇怪的……

另请阅读:Windows 10 现在允许您删除更多默认安装的应用程序


询问我们最新的!

  • 这位神秘的星际访客可能会改变我们的太阳系

    太阳系中行星的略微倾斜和偏心的轨道长期以来一直引起科学家的兴趣。一项新的研究提出了一个令人着迷的理论:来自另一个恒星系统的巨大物体会破坏其最初的组织。太阳系...

    消息