tru*_*ktr 40 windows windows-7 ntfs filesystems
我想让 Windows 7 在硬盘驱动器(C 驱动器或任何其他 NTFS 驱动器)上读取/写入任何内容时区分大小写。
我通过谷歌找到了一个视频,说要更改注册表项
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath
Run Code Online (Sandbox Code Playgroud)
值为 1 ( source )。
我还发现了一个 Windows 支持项目,其中说明了有关修改注册表项的内容
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
Run Code Online (Sandbox Code Playgroud)
这让我假设将值设为 0 将使 Windows 对 NTFS 文件系统(源代码)区分大小写。
我有一种感觉,第二种解决方案就是答案,但我不确定,我不想在不确定的情况下尝试。
有谁确定在读取/写入 C 驱动器(和任何其他 NTFS 驱动器)时使 Windows 7 区分大小写的正确方法是什么?
Bas*_*ass 29
您可以按照其他作者的建议将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/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
Run Code Online (Sandbox Code Playgroud)
一旦上述完成后,你就可以对付使用区分大小写的文件名bash,mc,git等。
ven*_*mus 17
您可以在网络上找到的所有这些设置都是针对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% 的软件都这样做),无论你做什么,它都不区分大小写。Windows 中的所有内置软件(如资源管理器、命令提示符、Internet Explorer 等)和所有消费者软件都使用 WIN32,并且始终不区分大小写。
NFS 服务、Java 和其他一些是 POSIX,它们将遵守 'obcaseinsensitive' 注册表设置。然而,关闭该选项实际上可能会给您带来更大的问题,因为该软件可以创建无法从 Windows 本身和其他 Win32 软件访问的文件。
use*_*819 16
为了在同一目录中实际创建 2 个名称相同但大小写不同的文件,您需要安装 Unix Services 3.5 但这仅适用于 32 位 Windows。然后您需要运行“C Shell”来创建文件。您无法通过资源管理器创建文件。一旦创建,资源管理器就不能很好地处理这些文件。如果你去重命名第二个,光标会跳到第一个。此外,大多数应用程序只能打开其中一个文件,因为它们希望文件系统不区分大小写。如果您使用的是 64 位,请安装 Cygwin 并将其更改为区分大小写。
我试图在开发过程中模拟 Linux 区分大小写的文件系统以进行调试。似乎更好的方法是使用带有 Ubuntu 实例的 VMWare 进行开发。
| 归档时间: |
|
| 查看次数: |
64953 次 |
| 最近记录: |