Все версии Windows нечувствительны к регистру?
Я знаю, что ОС Windows (как правило) нечувствительна к регистру. Это правда для всех операционных систем Windows (от Windows 95 до Windows 7)? Есть ли настройка реестра, чтобы сделать регистр Windows чувствительным?
6 ответов
Да, это верно для всех версий Windows. Нет способа сделать Windows чувствительной к регистру. Имейте в виду, что некоторые приложения, которые были первоначально разработаны для Unix/Linux и затем портированы, могут быть чувствительными к регистру. Cygwin, например, чувствителен к регистру. Это поведение крайне редко, хотя.
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
На самом деле, это зависит от используемой вами (вашей программы) подсистемы API / Windows.
Если вы используете " Windows API" (стандарт для приложений Windows), то имена файлов не чувствительны к регистру. Однако, если вы используете подсистему POSIX (или Windows Services for Unix), вы можете включить чувствительность к регистру.
См., Например, эту статью поддержки MS: Включение чувствительного к регистру поведения с Windows XP и Interix Subsystem или SFU
Это отсюда. Вы можете установить 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
и т.п.
Обязательно перезагрузите компьютер после редактирования обоих.
Cygwin пытается подражать Unix. Таким образом, он должен наследовать чувствительность к регистру, чтобы не ломать приложения. Windows сама по себе не чувствительна к регистру. Речь идет о файловой системе. Вы можете прочитать больше об этом в Файловая система, Файловые системы под Microsoft Windows (Википедия).
Barfieldmv правильно. Файловая система действительно чувствительна к регистру, и файлы хранятся в соответствующем регистре. Слой доступа к файлам отвечает за удаление случая при сопоставлении файлов с новыми файловыми дескрипторами