如何让 Windows 7 的文件系统完全区分大小写?

如何让 Windows 7 的文件系统完全区分大小写?

我想让 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注册表值设置为。创建一个名为以下内​​容的文件并运行它。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

答案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 /?

相关内容