Я знаю, что ОС Windows (как правило) нечувствительна к регистру. Это правда для всех операционных систем Windows (от Windows 95 до Windows 7)? Есть ли настройки реестра, чтобы сделать Windows чувствительной к регистру?
6 ответов
Да, это верно для всех версий Windows. Нет способа сделать Windows чувствительной к регистру. Имейте в виду, что некоторые приложения, которые были первоначально разработаны для Unix/Linux и затем портированы, могут быть чувствительными к регистру. Cygwin, например, чувствителен к регистру. Такое поведение крайне редко, хотя.
На самом деле, это зависит от подсистемы API / Windows, которую вы (ваша программа) используете.
Если вы используете « Windows API » (стандарт для приложений Windows), то имена файлов не чувствительны к регистру. Однако, если вы используете подсистему POSIX (или Windows Services for Unix), вы можете включить чувствительность к регистру.
См., Например, эту статью поддержки MS: Включение чувствительного к регистру поведения с Windows XP и Interix Subsystem или SFU
Cygwin пытается подражать Unix. Таким образом, он должен наследовать чувствительность к регистру, чтобы не ломать приложения. Windows сама по себе не чувствительна к регистру. Речь идет о файловой системе. Вы можете прочитать больше об этом в Файловая система, Файловые системы под Microsoft Windows (Википедия).
Это отсюда. Вы можете установить значение реестра 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 для работы с именами файлов с учетом регистра.
Для этого вам нужно смонтировать файловые системы NTFS с posix=1
в вашем /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
и т.д.
Обязательно перезагрузите компьютер после редактирования обоих.
Microsoft добавила новый чувствительный к регистру флаг (атрибут), который можно применять к каталогам (папкам) NTFS. Для каталогов, в которых этот флаг установлен (включен), все операции с файлами в этом каталоге чувствительны к регистру независимо от того, был ли указан FILE_FLAG_POSIX_SEMANTICS. Это означает, что если у вас есть два файла, которые отличаются только регистром в каталоге, помеченном как чувствительный к регистру, все приложения смогут получить к ним доступ.
Начиная с Windows 10 build 17107, Microsoft добавила возможность просматривать и изменять этот флаг в команде fsutil.exe.
Чтобы проверить, является ли каталог чувствительным к регистру, выполните следующую команду:
fsutil.exe file queryCaseSensitiveInfo <path>
Чтобы пометить каталог как регистрозависимый или регистрозависимый соответственно:
fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable
Barfieldmv это правильно. Файловая система действительно чувствительна к регистру, и файлы хранятся в соответствующем регистре. Слой доступа к файлам отвечает за удаление случая при сопоставлении файлов с новыми файловыми дескрипторами