基于 UNIX 应用程序的子系统与区分大小写

应用到: Windows 7, Windows Server 2008 R2

在基于 Microsoft(R) Windows(R) 的操作系统中,多数对象(如文件和目录)的名称是保留大小写的,但并不区分大小写。这意味着命名这些对象时可以使用大写或小写字符,但 Windows 并不根据大小写本身进行区分名称。例如,不能在同一个目录中有两个命名为 sample.txt 和 Sample.txt 的文件,因为 Windows 在识别文件时会认为这两个名称相同。

区分大小写与基于 UNIX 应用程序的子系统

相比之下,基于 UNIX 的操作系统完全区分大小写,因此运行基于 UNIX 的操作系统当对象名称只有所用字符大小写不同时可以区分这些对象名称。因此,在多数基于 UNIX 的计算机中,sample.txt 和 Sample.txt 可以存储在同一个目录中,UNIX 操作系统在对文件执行操作时可以区分它们。例如,命令 rm S*.txt 将删除 Sample.txt,而不是 sample.txt。

为了实现典型的 UNIX 行为,基于 UNIX 应用程序的子系统在处理文件名称时通常区分大小写。这一点可能会引发安全问题,特别是对于习惯了 Windows 不区分大小写命名的 Windows 用户而言。例如,感染了特洛伊木马类恶意程序的 edit.exe 文件的一个版本命名为 EDIT.EXE,可能和 edit.exe 存储在同一个目录中。如果用户在 Windows 命令提示符处键入 edit,可能会执行特洛伊木马版本 (EDIT.EXE) 而不是标准文件。如果启用了区分大小写功能,Windows 用户应该意识到这种可能性。

还原区分大小写功能默认值

在 Microsoft Windows Server(R) 2008 R2、Windows(R) 7、Windows Server(R) 2008、Windows Vista(R)、Windows Server(R) 2003 和 Windows XP 操作系统中,除 Win32 子系统外的其他子系统的默认行为是保留大小写的,但不区分大小写;在以前版本的 Windows 中,此类子系统默认是完全区分大小写的。若要支持标准的 UNIX 行为,可以在安装作为 Utilities and Software Development Kit (SDK) for Subsystem for UNIX-based Applications 下载包一部分的基本实用程序时,为非 Win32 子系统更改默认的 Windows Server 2003 和 Windows XP 行为。如果启用了区分大小写功能后来卸载了基本实用程序,安装程序会还原非 Win32 子系统的默认不区分大小写的行为。

有关更改区分大小写设置的详细信息,请参阅关于“配置文件名和文件夹名的区分大小写属性”的文章 (http://go.microsoft.com/fwlink/?LinkId=53334)(可能为英文网页)。

显示: