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

pro*_*eek 27 windows

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

nhi*_*kle 19

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

  • “没有办法让 Windows 区分大小写。” 不*很*准确。如其他答案中所述,有多种方法可以使 Windows 的某些部分区分大小写。 (10认同)
  • 这不再是真的,现在您可以在每个目录的基础上使 Windows 10 区分大小写。有关详细信息,请参阅[本文](https://www.howtogeek.com/354220/how-to-enable-case-sensitive-folders-on-windows-10/)。 (2认同)

小智 17

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

Windows 10 build 17107 开始,Microsoft 已在 fsutil.exe 命令中添加了查看和修改此标志的功能。

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

fsutil.exe file queryCaseSensitiveInfo <path>
Run Code Online (Sandbox Code Playgroud)

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

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable
Run Code Online (Sandbox Code Playgroud)


sle*_*ske 11

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

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

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


小智 6

Cygwin 试图模拟 Unix。因此它需要继承区分大小写以不破坏应用程序。Windows 本身不区分大小写。这是关于文件系统的。您可以在文件系统、Microsoft Windows 下的文件系统(维基百科)中阅读有关它的更多信息。


Wil*_*iam 6

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000
Run Code Online (Sandbox Code Playgroud)

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

为此,您需要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
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

巴菲尔德MV是正确的。文件系统确实区分大小写,并且文件以适当的大小写存储。文件访问层负责在将文件与新文件描述符匹配时删除大小写