Все версии 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 правильно. Файловая система действительно чувствительна к регистру, и файлы хранятся в соответствующем регистре. Слой доступа к файлам отвечает за удаление случая при сопоставлении файлов с новыми файловыми дескрипторами

Другие вопросы по тегам