我想让 Windows 7 在读取/写入硬盘驱动器(C 驱动器或任何其他 NTFS 驱动器)上的任何内容时区分大小写。
我在谷歌上找到了一个视频,上面说要更改注册表项
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath
值为 1 (来源)。
我还发现了一个 Windows 支持项目,其中提到了修改注册表项
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
这让我假设将值设置为 0 将使 Windows 在 NTFS 文件系统中区分大小写(来源)。
我觉得第二种解决方案就是答案,但我不确定,而且我不想在没有确定的情况下尝试。
是否有人确切知道在读取/写入 C 盘(以及任何其他 NTFS 驱动器)时使 Windows 7 区分大小写的正确方法是什么?
答案1
您可以按照其他作者的建议将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
然后使用赛格威处理区分大小写的文件名。
为了做到这一点,你需要使用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
文件mc
名git
。
答案2
您可以在网络上找到的所有这些设置都适用于NFS不是为了NTFS(注意区别)!
NFS(网络文件系统)是一种网络协议。
因此改变注册表项HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
将不会改变任何你想要改变的东西。
NTFS 区分大小写但Windows API 不是,它只记住文件名的大小写。这意味着尽管您的文件显示为 ,但AbC.TXT
它仍然可以通过abc.txt
和访问aBc.TxT
。这是 Windows 的限制,而不是 NTFS 的限制。
另一个选项HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath
基本上关闭了 DOS 使用的旧版 8.3 文件名的规范化(全部大写)。当启用该选项时(默认),ABC.TXT
将显示为Abc.txt
,但仍可供所有其他变体访问。
更准确一点:
实际上这取决于访问 FS 的软件。
如果它使用 WIN32 API(99.9% 的软件都使用 WIN32 API),那么无论你做什么,它都是不区分大小写的。Windows 中的所有内置软件(如 Explorer、命令提示符、Internet Explorer 等)以及所有消费软件都使用 WIN32,并且始终不区分大小写。
NFS 服务、Java 和其他一些服务都是 POSIX,它们将遵循“不区分大小写”注册表设置。但是,关闭该选项实际上可能会给您带来更大的问题,因为该软件可以创建 Windows 本身和其他 Win32 软件无法访问的文件。
答案3
为了在同一目录中实际创建 2 个名称相同但大小写不同的文件,您需要安装 Unix Services 3.5,但这仅适用于 32 位 Windows。然后您需要运行“C Shell”来创建文件。您无法通过资源管理器创建文件。一旦创建,资源管理器就无法很好地处理这些文件。如果您重命名第二个文件,光标会跳转到第一个文件。此外,大多数应用程序只能打开其中一个文件,因为它们需要不区分大小写的文件系统。如果您使用的是 64 位,请安装 Cygwin 并将其更改为区分大小写。
我在开发过程中尝试模拟 Linux 区分大小写的文件系统以进行调试。似乎更好的方法是使用 VMWare 和 Ubuntu 实例进行开发。
答案4
微软对 NTFS 和改变大小写敏感度的看法。
看起来您不需要更改内核来允许在网络上进行区分大小写的查找。
http://technet.microsoft.com/en-us/library/cc783185(WS.10).aspx
。
配置文件和文件夹名称的区分大小写
适用于:Windows Server 2003 R2
要使用 Windows 界面配置文件和文件夹名称的区分大小写,请打开 Microsoft 网络文件系统服务:单击“开始”,指向“程序”,指向“管理工具”,然后单击“Microsoft 网络文件系统服务”。
如果有必要,连接到您想要管理的计算机。
右键单击“NFS 服务器”,然后单击“属性”。
单击文件名处理选项卡。
执行以下操作之一:
要启用区分大小写的文件和目录名称查找,请选中启用区分大小写的查找复选框。
要禁用区分大小写的文件和目录名称查找,请清除启用区分大小写的查找复选框。
单击“应用”。
重要提示:这些更改只有在重新启动 NFS 服务器后才会生效。有关如何停止和启动 NFS 服务器的信息,请参阅启动和停止 NFS 服务器。您还需要禁用 Windows 内核不区分大小写,以便 NFS 服务器支持区分大小写的文件名。您可以通过将以下注册表项清除为 0 来禁用 Windows 内核不区分大小写:HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel DWORD “obcaseinsensitive”
要使用命令行配置文件和文件夹名称的区分大小写,请打开命令提示符。
要启用区分大小写,请输入以下内容:
nfsadmin 服务器 [ 计算机名称 ] 配置 casesensitivelookups=yes
要禁用区分大小写并选择性地指定 NFS 服务器返回的文件名的大小写,请在命令提示符下键入以下命令:
nfsadmin 服务器 [ 计算机名称 ] 配置 casesensitivelookups=no [ntfscase={upper | lower | retain}]
参数 > 计算机名称 = 您要配置的计算机的名称。
重要提示:这些更改只有在重新启动 NFS 服务器后才会生效。有关如何停止和启动 NFS 服务器的信息,请参阅启动和停止 NFS 服务器。
注意 ntfscase 选项设置 NTFS 文件系统的大小写敏感性。默认大小写敏感性为保留(保留大小写)。要查看此命令的完整语法,请在命令提示符下键入:nfsadmin server /?
。