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


18

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


2
是的,继承该属性的所有版本的MS-DOS都是如此。(当然,MS-DOS并没有保留大小写,所以事情向前发展了:
理查德(Richard

关于什么不区分大小写?文件名?密码?
Peter Mortensen 2014年

Answers:


15

是的,对于所有版本的Windows都是如此。无法使Windows区分大小写。请记住,尽管某些最初为Unix / Linux开发并移植的应用可能区分大小写。例如,Cygwin区分大小写。但是,这种行为极为罕见。


7
“没有办法使Windows区分大小写。” 是不是准确。有其他方法可以使Windows的各个部分区分大小写,如其他答案所述。
sleske 2010年

确实,从用户的角度来看,Windows文件名不区分大小写,并且没有(简单的)更改方式。
sleske

Windows的某些方面可以区分大小写,但它依赖于其他PC的功能。保存到Linux PC上确实存在的共享目录将允许使用区分大小写的文件名。这是由于FILESYSTEM之类的@sleske所说的,而不是因为“它是Windows”
UtahJarhead 2012年

1
这并非完全正确。您可以使用Windows Services for UNIX使Windows的服务器版本和某些台式机版本区分大小写。
Keltari 2013年

1
@Matt这个答案不正确(尽管它们是适当的答案)。您只是没有启用区分大小写。 superuser.com/questions/266110/…我必须归档一个名为testfile和Testfile的文件。 /bIn/BaSh在我的系统上不起作用。
威廉


5

Cygwin尝试模仿Unix。因此,它需要继承区分大小写的方式,才能不中断应用程序。Windows本身并不区分大小写。关于文件系统。您可以在“ 文件系统”,“ Microsoft Windows(Wikipedia)” 下的“文件系统”中了解更多信息。


正确。NTFS 大小写敏感的,它只能在Windows禁用。一个人可以启用它,但是可以unsupported说非常..。
Apache

这不是针对MijndertStuij,而是针对OP,但我不想踩他的脚。他应得的这份代表。无论是FAT(原始的MS-DOS和Windows版本)还是NTFS(Windows NT和更高版本),它们都不区分大小写。如果您通过Samba(文件和打印共享的表亲)将文件保存到Linux文件系统,您会注意到这些差异。
犹他州Jarhead

从Wikipedia NTFS页面:文件名中允许的字符。-在Posix名称空间中,除U + 0000(NUL)和/(斜杠)之外的任何UTF-16代码单元(区分大小写)。在Win32名称空间中,除了U + 0000(NUL)/(斜杠)\(反斜杠):(冒号)*(星号)以外的任何UTF-16代码单元(不区分大小写)?(问号)“(引号)<(小于)>(大于)和|(烟斗)[5]
犹他州黑海德2012年

尝试/bIn/BaSh在Cygwin中运行,然后再次告诉我它区分大小写。
马特

5

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

4

这是从这里。您可以将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

一旦上述完成后,你就可以对付使用区分大小写的文件名bashmcgit等。

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


3

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


1
您能否提供有关文件系统和用户之间这种抽象如何工作的更多详细信息(即,提供分步示例)?您还应该解决操作员在以前的操作系统上的实际问题,以及是否可以强制使用区分大小写的行为。
MaQleod 2012年

由于我现在是个Linux书呆子,所以我现在无法提供非常完整的答案。但是,我可以提供以下内容。Windows Services for Unix使用与操作系统相同的文件系统,特别是不使用使大小写不敏感的API。请参阅:support.microsoft.com/kb/817921的信息案例“保留”怎么是一样的案例“敏感”但是公共接口层允许案例“无知” :)
whardier

您可以说Windows不区分大小写,而只是区分大小写。这意味着它(windows)知道字母是大写还是小写,并且接受它们两者。它不会将一个或另一个读为and错误。
IGRACH '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.