我知道Windows操作系统通常不区分大小写。是否适用于所有Windows操作系统(从Windows 95到Windows 7)?是否有任何注册表设置可以使Windows区分大小写?
我知道Windows操作系统通常不区分大小写。是否适用于所有Windows操作系统(从Windows 95到Windows 7)?是否有任何注册表设置可以使Windows区分大小写?
Answers:
是的,对于所有版本的Windows都是如此。无法使Windows区分大小写。请记住,尽管某些最初为Unix / Linux开发并移植的应用可能区分大小写。例如,Cygwin区分大小写。但是,这种行为极为罕见。
/bIn/BaSh在我的系统上不起作用。
实际上,这取决于您(您的程序)使用的API / Windows子系统。
如果使用“ Windows API ”(Windows应用程序的标准),则文件名不区分大小写。但是,如果您使用POSIX子系统(又名Unix的Windows服务),则可以启用区分大小写的功能。
请参阅此MS支持文章,例如:使用Windows XP和Interix子系统或SFU启用区分大小写的行为
Cygwin尝试模仿Unix。因此,它需要继承区分大小写的方式,才能不中断应用程序。Windows本身并不区分大小写。关于文件系统。您可以在“ 文件系统”,“ Microsoft Windows(Wikipedia)” 下的“文件系统”中了解更多信息。
unsupported说非常..。
/bIn/BaSh在Cygwin中运行,然后再次告诉我它区分大小写。
Microsoft添加了一个新的区分大小写的标志(属性),该标志可以应用于NTFS目录(文件夹)。对于设置(启用)此标志的目录,无论是否指定了FILE_FLAG_POSIX_SEMANTICS,对该目录中文件的所有操作均区分大小写。这意味着,如果在标记为区分大小写的目录中有两个仅因大小写而不同的文件,则所有应用程序都可以访问它们。
从Windows 10内部版本17107开始,Microsoft已将查看和修改此标志的功能添加到fsutil.exe命令中。
要检查目录是否区分大小写,请运行以下命令:
fsutil.exe file queryCaseSensitiveInfo <path>
要将目录分别标记为区分大小写或不区分大小写:
fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable
这是从这里。您可以将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
然后使用Cygwin处理区分大小写的文件名。
为此,如本文所建议的那样,您需要posix=1在您的中使用option 挂载NTFS文件系统。这是我的摘录:/etc/fstabfstab
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,mc,git等。
两者都编辑后,请确保重新启动。
Barfieldmv是正确的。文件系统确实区分大小写,并且文件以适当的大小写存储。当文件与新文件描述符匹配时,文件访问层负责删除大小写