Як зробити 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)?

Відповіді:


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" для створення файлів. Ви не можете створити файли через Провідник. Після створення, Explorer не грає добре з файлами. Якщо перейти до перейменування другого, курсор перескакує на перший. Крім того, більшість програм можуть відкрити лише один із файлів, оскільки вони очікують на нечутливу до регістру файлову систему. Якщо ви працюєте на 64 біті, встановіть Cygwin та змініть його на регістр.

Я намагався наслідувати файлову систему Linux з урахуванням регістру для налагодження під час розробки. Схоже, кращим підходом є використання VMWare з екземпляром Ubuntu для розробки.


"використовувати 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, але все ще буде доступний для всіх інших варіантів.

Щоб бути більш точним:

Насправді це залежить від програмного забезпечення, яке має доступ до FS.

Якщо він використовує API WIN32 (що робить 99,9% програмного забезпечення), це не залежно від регістру, що б ви не робили. Все вбудоване програмне забезпечення в Windows (наприклад, Explorer, командна лінія, Internet Explorer тощо), а також все програмне забезпечення для споживачів там використовується WIN32 і завжди нечутливе до регістру.

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


3
Насправді, на рівні FS перед додатковою обробкою він чутливий до регістру, проте NTFS переводить усі імена файлів у всі великі регістри, а коли вводиться один із малих символів, він переводить його у великі регістри, а потім шукає вказаний файл (див. Support.microsoft.com/ kb / 103657 )
Джефф Ф.

Ти правий. Я просто намагався пояснити це простіше.
venimus

Тож як версії Java на базі Win32 вдасться знайти "SHORT.class" проти "Short.class", якщо вони знаходяться в одному каталозі? Я не можу повірити, що НІМАЄ заклику робити це.
Іра Бакстер

Я думаю, тому що Java - POSIX
1414

2
Я досить впевнений, що стандартний час виконання Java (тобто від Oracle) не чутливий до регістру в Windows. Якби ви спробували вкласти SHORT.classі Short.classв той самий каталог, це не вийшло. (Звичайно, якщо вони знаходяться у файлі .jar, немає проблем.)
Гаррі Джонстон,

4

Я думаю, що це те, що ви шукаєте:

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

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

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

РЕДАКТУВАННЯ. Однак слідкуйте, що деякі програми можуть залежати від нечутливості випадків.

EDIT: Можливо, ви можете використовувати розділ UDF. Ця файлова система відрізняється від регістру, і я думаю, що вона працює і в Windows, і в Linux.

Дивіться це і це .


Чи можете ви розмістити більше інформації на сторінці, на яку ви посилаєтесь. Не копіюйте всю справу, але ви можете скопіювати відповідний абзац і резюмувати решту.
ChrisF

Ну, ціла сторінка лише абзац. Я швидко проведу редагування.
beatgammit

Дякую, tjameson. Щодо програм, які можуть залежати від нечутливості випадку, це справді є великою проблемою. Програма може шукати "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 for Network File System: натисніть кнопку Пуск, виберіть Програми, вкажіть Адміністративні інструменти та виберіть Microsoft Services for Network File System.

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

Клацніть правою кнопкою миші Сервер для NFS, а потім натисніть Властивості.

Перейдіть на вкладку Обробка імені файлів.

Виконайте одну з наступних дій:

Щоб увімкнути пошук файлів і імен файлів і каталогів, встановіть прапорець Увімкнути прапорець у регістрі.

Щоб вимкнути підключення до регістру імен файлів та імен файлів, зніміть прапорець Увімкнути регістри підключення до регістру.

Клацніть Застосувати.

Важливо Ці зміни не набудуть чинності, доки сервер для NFS не буде перезапущено. Інформацію про зупинку та запуск сервера для NFS див. У розділі Запуск та зупинка сервера для NFS. Вам також потрібно відключити нечутливість регістру ядра Windows, щоб сервер NFS підтримував імена файлів, що залежать від регістру. Ви можете відключити нечутливість регістру ядра Windows, очистивши наступний ключ реєстру до 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ ядро ​​DWORD "obcaseinsensitive"

Для налаштування чутливості регістру для імен файлів і папок за допомогою командного рядка Відкрийте командний рядок.

Щоб увімкнути чутливість регістру, введіть наступне:

nfsadmin сервер [ComputerName] конфігурація casesensitivelookups = так

Щоб вимкнути чутливість регістру та необов'язково вказати регістр імен файлів, повернутих сервером для NFS, у командному рядку введіть наступне:

nfsadmin сервер [ComputerName] конфігурація casesensitivelookups = no [ntfscase = {верхня | нижній | зберегти}]

Аргумент> Ім'я комп'ютера = Ім'я комп'ютера, який ви хочете налаштувати.

Важливо Ці зміни не набудуть чинності, доки сервер для NFS не буде перезапущено. Інформацію про зупинку та запуск сервера для NFS див. У розділі Запуск та зупинка сервера для NFS.

Примітка. Параметр ntfscase встановлює чутливість регістру для файлової системи NTFS. Чутливість регістру за замовчуванням зберігається (зберегти регістр). Щоб переглянути повний синтаксис для цієї команди, у командному рядку введіть: nfsadmin server /?

.


1
Я не думаю, що це дозволяє мати декілька файлів з тим самим іменем, що він хоче робити.
beatgammit

1
Тоді йому доведеться зробити злому реєстру.
Моаб

Застосовується до: Windows Server 2008 R2
Behrouz.M

3

Держави Microsoft ;

У NTFS імена зберігають регістри, але не враховують регістр.
NTFS не розрізняє назви файлів залежно від регістру.

Дозволення чутливості до регістру в Windows дозволить зловмисному програмному забезпеченню створювати файли, до яких користувач не може отримати доступ або видалити, тому це заборонено з поважної причини.

У будь-якому випадку, я цілком впевнений, що якщо вам вдалося зробити чутливий до регістру NTFS, Windows вийде з ладу і повторна інсталяція стане єдиним рішенням.


Ви також правильні, що це стосується проблеми безпеки, якщо це зробити. "Наприклад, версія edit.exe, заражена шкідливою програмою типу троянських коней і названа EDIT.EXE, може зберігатися в тому ж каталозі, що і edit.exe. Якщо користувач повинен був набрати редагування в командному рядку Windows. , версія троянських коней (EDIT.EXE) може бути виконана замість стандартної версії ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab

Він, ймовірно, не вийде з ладу Windows, якщо ви не переймените ключові файли / папки Я майже впевнений, що Windows обов'язково використовує правильний випадок, насправді навіть рекомендують.
beatgammit

Хм, це цікавий тямесон. Чи можете ви надати посилання на цю рекомендацію?
trusktr

11
Якщо зловмисне програмне забезпечення отримує доступ до запису на ваш диск, у вас виникають великі проблеми, залежно від того, чи ваша файлова система відрізняється від регістру чи ні. #redherring
Леопд

3
У Реєстрі є повна посилання на системні файли з дико непослідовним використанням справ. Чутливість до справи може спричинити значні поломки.
kreemoweet
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.