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

1663
Ivarpoiss

Мне все равно, какая именно файловая система будет, мне просто нужно, чтобы пути к файлам работали с учетом регистра.

Возможно, поведение, аналогичное общему ресурсу samba на Linux, с включенной чувствительностью к регистру. Это было бы прекрасно, за исключением того, что мне нужно, чтобы диск хранился локально.

Есть ли драйверы / инструменты для этого?

Я уже попробовал пару драйверов ext2 для Windows, которые не работали для этой цели :( ( http://www.fs-driver.org/ и http://www.fs-driver.org/ )

5
Это откат от DOS, где имена файлов не чувствительны к регистру, а MS-Windows совместима с этой удобной для пользователя функцией. К сожалению, если NTFS внезапно переключится на учет регистра, то многие вещи потерпят неудачу (и, возможно, ОС вообще не загрузится), так как вы сможете найти регистр без учета регистра в реестре Windows (например, , C: / WINDOWS /, C: / Windows, C: / windows и т. Д.) И в различных конфигурационных файлах (и, возможно, также в некоторых жестко запрограммированных материалах). Windows и многим приложениям потребовалась бы серьезная работа для поддержки этого для диска C: по крайней мере. Randolf Richardson 13 лет назад 0
Посмотрите на этот пост, я думаю, он может вам помочь. http://superuser.com/questions/266110/how-do-you-make-windows-7-fully-case-sensitive-with-respect-to-the-filesystem samack 13 лет назад 0
Вот что я на самом деле спрашивал: как избежать превращения обработки файлов NTFS в глобальном смысле с учетом регистра в Windows :) Поэтому мне потребуются некоторые инструменты для песочницы, устанавливаемая файловая система или что-то в этом роде. Как те драйверы ext2 там. Единственное требование - они должны учитывать регистр букв при идентификации файлов. Ivarpoiss 13 лет назад 0

3 ответа на вопрос

3
SecurityMatt

Простой ответ - нет. Длинный ответ ...

NTFS хранит имена файлов с учетом регистра (NTFS может иметь README.txt и readme.txt в одном каталоге), и даже файловый менеджер Windows может внутренне управлять запросами с учетом регистра к именам файлов через системные вызовы NtOpenFile / NtCreateFile.

К сожалению для вас, функция Win32 CreateFile (используемая повсеместно, в том числе fopen) будет внутренне вызывать NtCreateFile, используя флаг OBJ_CASE_INSENSITIVE, который будет означать, что все приложения, которые используют CreateFile, будут видеть вашу файловую систему с учетом регистра без учета регистра. На практике это означает, что все приложения будут видеть вашу файловую систему без учета регистра независимо от того, является ли ваша файловая система фактически чувствительной к регистру.

Единственный способ, которым я могу подумать, чтобы вы практически применили чувствительность к регистру, это написать драйвер фильтра, который уберет флаг OBJ_CASE_INSENSITIVE из входящих запросов на системный вызов, который затем позволит NTFS, EXT2 или любой внутренней файловой системе вести себя по умолчанию., чувствительный к регистру способ.

1
surfasb

Это возможно изнутри Windows, но вы должны быть в состоянии написать C.

NTFS фактически хранит имена с учетом регистра (для поддержки подсистемы POSIX). Однако NTFS на самом деле не поддерживает чувствительные к регистру функции. Учитывая, что NT изначально был написан как прямой конкурент UNIX, это неудивительно.

http://support.microsoft.com/kb/100108

http://blogs.msdn.com/b/sfu/

http://www.netbsd.org/docs/pkgsrc/platforms.html#interix

0
adib

Похоже, что единственный способ - это установить виртуализированный Linux и использовать диск виртуальной машины в Windows.

Я искал в Интернете то же самое решение, в первую очередь, для извлечения GIT-репозитория из системы Linux, в которой файлы различаются только по регистру (не проповедуйте, почему они там есть - это вне моего контроля). Но похоже, что не существует относительно простого способа сделать это, если не написать собственную подсистему или глубоко интегрировать ее в подсистему Interix (теперь это сервисы Unix).