Как сделать Windows 7 полностью чувствительной к регистру файловой системы?

37

Я хочу сделать Windows 7 чувствительной к регистру, когда она читает / записывает что-либо на жесткий диск (диск C или любой другой диск NTFS).

Я нашел видео через Google, который говорит, чтобы изменить раздел реестра

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath

до значения 1 ( источник ).

Я также нашел пункт поддержки Windows, который говорит что-то об изменении ключа реестра

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive

это заставляет меня предположить, что установка значения 0 сделает Windows чувствительной к регистру файловых систем NTFS ( источник ).

У меня есть чувство, что второе решение - это ответ, но я не уверен, и я не хочу пробовать это, не будучи уверенным.

Кто-нибудь знает наверняка, как правильно сделать Windows 7 чувствительной к регистру при чтении / записи на диск C (и любой другой диск NTFS)?

trusktr
источник

Ответы:

25

Вы можете установить 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т. Д.

бас
источник
6
Вы должны перезагрузить, чтобы это вступило в силу.
Уильям
2
@William: я считаю, что вам нужно всего лишь завершить все процессы и сервисы Cygwin (например, Apache , sshd и т. Д.). Этого должно быть достаточно, так как cygwin1.dllбудет выгружен из ОЗУ.
Бас
3
Я говорю о HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
Уильям
16

Чтобы фактически создать 2 файла с одним и тем же именем, но с другим регистром в одном и том же каталоге, вам необходимо установить Unix Services 3.5, но это работает только в 32-битной Windows. Затем вам нужно запустить «C Shell» для создания файлов. Вы не можете создавать файлы через проводник. После того, как созданный, проводник не играет хорошо с файлами. Если вы идете переименовать второй, курсор переходит на первый. Кроме того, большинство приложений могут открывать только один из файлов, так как они ожидают нечувствительную к регистру файловую систему. Если вы используете 64-битную версию, установите Cygwin и измените его на регистр.

Я пытался эмулировать чувствительную к регистру файловую систему Linux для целей отладки во время разработки. Кажется, лучший подход - использовать VMWare с экземпляром Ubuntu для разработки.

user1491819
источник
«использовать VMWare с экземпляром Ubuntu для разработки» => Не относится к играм
Петър Петров
16

Все эти настройки, которые вы можете найти в Интернете, предназначены для 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основном отключает нормализацию устаревших имен файлов 8.3, используемых DOS (все они заглавными буквами). Когда он включен (по умолчанию) ABC.TXTбудет отображаться как Abc.txt, но все равно будет доступен для всех других вариантов.

Чтобы быть более точным:

На самом деле это зависит от программного обеспечения, которое обращается к ФС.

Если он использует WIN32 API (что делает 99,9% программного обеспечения), он не будет учитывать регистр, что бы вы ни делали. Все встроенное программное обеспечение в Windows (например, Explorer, командная строка, Internet Explorer и т. Д.) И все потребительские программы используют WIN32 и всегда чувствительны к регистру.

Служба NFS, Java и некоторые другие являются POSIX, и они будут подчиняться «нечувствительному к регистру» параметру реестра. Однако отключение этой опции может привести к большим проблемам, поскольку это программное обеспечение может создавать файлы, недоступные из самой Windows и других программ Win32.

venimus
источник
3
На самом деле, на уровне FS перед дополнительной обработкой он чувствителен к регистру, однако NTFS переводит все имена файлов в верхний регистр, а при вводе одного из символов нижнего регистра переводит его в верхний регистр, а затем ищет указанный файл (см. Support.microsoft.com/ kb / 103657 )
Джефф Ф.
Вы правы. Я просто попытался объяснить это проще.
Venimus
Так как же версия java для Win32 успешно находит «SHORT.class» и «Short.class», если они находятся в одном каталоге? Я не могу поверить, что нет никакого вызова сделать это.
Ира Бакстер
Я думаю, потому что Java - это POSIX
venimus 22.10.14
2
Я вполне уверен, что стандартная среда выполнения Java (то есть от Oracle) не чувствительна к регистру в Windows. Если вы попытаетесь положить SHORT.classи Short.classв тот же каталог, это не сработает. (Конечно, если они находятся внутри файла .jar, проблем нет.)
Harry Johnston
4

Я думаю, это то, что вы ищете:

http://www.chilkatsoft.com/p/p_454.asp

На этой странице рекомендуется настройка HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive значение 0, чтобы сделать его чувствительным к регистру. Я думаю, что вы уже нашли это, и это похоже на стандартный способ сделать это (даже Microsoft KB, которую вы нашли, предлагает это).

Похоже, вы должны изменить настройки ядра. Остерегайтесь обновлений, хотя.

РЕДАКТИРОВАТЬ: Будьте осторожны, некоторые программы могут зависеть от нечувствительности к регистру.

РЕДАКТИРОВАТЬ: Возможно, вы могли бы использовать раздел UDF. Эта файловая система чувствительна к регистру, и я думаю, что она работает как в Windows, так и в Linux.

Смотрите это и это .

beatgammit
источник
Можете ли вы опубликовать дополнительную информацию со страницы, на которую вы ссылаетесь, пожалуйста. Не копируйте все это, но вы можете скопировать соответствующий абзац и суммировать остальное.
ChrisF
Ну, вся страница только абзац. Я сделаю быстрое редактирование, хотя.
beatgammit
Спасибо Тьямесон. Что касается программ, которые могут зависеть от нечувствительности к регистру, это действительно большая проблема. Программа может искать «WINDOWS» и не находить ее, потому что это действительно «Windows», верно? Стреляй, я затрудняюсь понять, как копировать вещи из Linux в Windows, и я попал в ситуацию, когда в одном месте существуют папки с одинаковым написанием и разными заглавными буквами.
trusktr
Ну, единственное, о чем я могу думать, это конфликтовать вручную. Если вы копируете файлы поверх, Windows должна спросить вас, хотите ли вы объединить или сделать копию или что-то еще. Я не могу вспомнить (я сам человек Linux).
beatgammit
Согласно этой статье это работает только для подсистем, отличных от Win32, поэтому не относится к NTFS.
harrymc
4

Что Microsoft должна сказать о NTFS и изменении чувствительности к регистру.

Похоже, вам не нужно менять ядро, чтобы разрешить поиск с учетом регистра в сети.

http://technet.microsoft.com/en-us/library/cc783185(WS.10).aspx

,

Настройка чувствительности к регистру для имен файлов и папок

Применяется к: Windows Server 2003 R2

Чтобы настроить чувствительность к регистру имен файлов и папок с помощью интерфейса Windows Откройте Microsoft Services для сетевой файловой системы: нажмите «Пуск», выберите «Программы», «Администрирование», а затем нажмите «Microsoft Services для сетевой файловой системы».

При необходимости подключитесь к компьютеру, которым хотите управлять.

Щелкните правой кнопкой мыши Сервер для NFS и выберите Свойства.

Нажмите вкладку Обработка имени файла.

Выполните одно из следующих действий:

Чтобы включить поиск файлов и каталогов с учетом регистра, установите флажок Включить поиск с учетом регистра.

Чтобы отключить поиск файлов и каталогов с учетом регистра, снимите флажок Включить поиск с учетом регистра.

Нажмите Применить.

Важно! Эти изменения не вступят в силу до перезапуска сервера для NFS. Сведения о том, как остановить и запустить сервер для NFS, см. В разделе Запуск и остановка сервера для NFS. Также необходимо отключить нечувствительность к регистру ядра Windows, чтобы сервер для NFS поддерживал имена файлов с учетом регистра. Вы можете отключить нечувствительность к регистру ядра Windows, очистив следующий раздел реестра в 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD «obcaseinsensitive»

Чтобы настроить чувствительность к регистру имен файлов и папок с помощью командной строки Откройте командную строку.

Чтобы включить чувствительность к регистру, введите следующее:

nfsadmin server [ComputerName] config casesensitivelookups = yes

Чтобы отключить чувствительность к регистру и при необходимости указать регистр имен файлов, возвращаемых сервером для NFS, введите в командной строке следующую команду:

nfsadmin server [ComputerName] config casesensitivelookups = no [ntfscase = {upper | ниже | сохранение}]

Аргумент> Имя компьютера = имя компьютера, который вы хотите настроить.

Важно! Эти изменения не вступят в силу до перезапуска сервера для NFS. Сведения о том, как остановить и запустить сервер для NFS, см. В разделе Запуск и остановка сервера для NFS.

Примечание. Параметр ntfscase устанавливает чувствительность к регистру файловой системы NTFS. Чувствительность к регистру по умолчанию - сохранить (сохранить регистр). Чтобы просмотреть полный синтаксис этой команды, введите в командной строке: nfsadmin server /?

,

Moab
источник
1
Я не думаю, что это позволяет иметь несколько файлов с одинаковым именем, что он и хочет делать.
beatgammit
1
Тогда ему придется заняться взломом реестра.
Моав
Применяется к: Windows Server 2008 R2
Behrouz.M
3

Microsoft заявляет ;

В NTFS имена сохраняют регистр, но не чувствительны к регистру.
NTFS не делает различий в именах файлов в зависимости от регистра.

Разрешение чувствительности к регистру в Windows позволит вредоносным программам создавать файлы, к которым пользователь не сможет получить доступ или удалить их, поэтому это недопустимо по уважительной причине.

В любом случае, я совершенно уверен, что если вам удастся настроить NTFS с учетом регистра, Windows будет аварийно завершать работу, и переустановка будет единственным решением.

harrymc
источник
Вы также правы, что это представляет проблему безопасности, если вы делаете. «Например, версия edit.exe, зараженная вредоносной программой типа« троянский конь »с именем EDIT.EXE, может храниться в том же каталоге, что и edit.exe. Если пользователь вводит команду edit в командной строке Windows , версия троянского коня (EDIT.EXE) может быть выполнена вместо стандартной версии ".. technet.microsoft.com/en-us/library/cc732389.aspx
Моав
Вероятно, это не приведет к сбою Windows, если вы не переименуете ключевые файлы / папки. Я уверен, что Windows обязательно использует правильный регистр, на самом деле, они даже рекомендуют его.
beatgammit
Хм, это интересно, tjameson. Можете ли вы дать ссылку на эту рекомендацию?
trusktr
11
Если вредоносная программа получает доступ для записи на ваш диск, у вас большие проблемы, независимо от того, чувствительна ли ваша файловая система к регистру или нет. #redherring
Leopd
3
Реестр переполнен ссылками на системные файлы с крайне противоречивым использованием случаев. Чувствительность к регистру может привести к серьезным поломкам.
kreemoweet