所有版本的 Windows 都不区分大小写吗?

所有版本的 Windows 都不区分大小写吗?

我知道 Windows 操作系统(通常)不区分大小写。所有 Windows 操作系统(从 Windows 95 到 Windows 7)都是这样吗?是否有任何注册表设置可以使 Windows 区分大小写?

答案1

是的,这适用于所有版本的 Windows。没有办法让 Windows 区分大小写。但请记住,一些最初为 Unix/Linux 开发然后移植的应用程序可能区分大小写。例如,Cygwin 区分大小写。但这种行为极其罕见。

答案2

Microsoft 添加了一个新的区分大小写的标志(属性),可应用于 NTFS 目录(文件夹)。对于设置了此标志(启用)的目录,无论是否指定了 FILE_FLAG_POSIX_SEMANTICS,对该目录中的文件的所有操作都是区分大小写的。这意味着,如果您在标记为区分大小写的目录中有两个仅大小写不同的文件,则所有应用程序都可以访问它们。

从...开始Windows 10 内部版本 17107,微软已经向fsutil.exe命令添加了查看和修改此标志的功能。

要检查目录是否区分大小写,请运行以下命令:

fsutil.exe file queryCaseSensitiveInfo <path>

要将目录标记为区分大小写或不区分大小写:

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable

答案3

实际上,这取决于您(您的程序)使用的 API / Windows 子系统。

如果您使用“Windows API“(Windows 应用程序的标准),则文件名不区分大小写。但是,如果您使用 POSIX 子系统(又名 Unix 的 Windows 服务),则可以启用区分大小写。

例如,请参阅此 MS 支持文章:使用 Windows XP 和 Interix 子系统或 SFU 启用区分大小写的行为

答案4

这是来自这里。您可以按照其他作者的建议将HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive注册表值设置为。创建一个名为以下内​​容的文件并运行它。0add.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000

然后使用赛格威处理区分大小写的文件名。

为了做到这一点,你需要使用posix=1中的选项挂载 NTFS 文件系统/etc/fstab,如下所示本文建议。以下是我的一个片段fstab

none                    /cygdrive       cygdrive        binary,posix=1,user             0 0
C:                      /cygdrive/c     ntfs            binary,posix=1,user,auto        0 0
C:/Users                /home           ntfs            binary,posix=1,user,auto        0 0

完成上述操作后,您将能够使用、等处理区分大小写的bash文件mcgit

编辑完两者后请确保重新启动。

相关内容