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

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

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

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

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

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

решение1

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

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

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

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

решение2

Изнутри Windows это возможно, но для этого нужно уметь писать на языке C.

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

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

Связь

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

решение3

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

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

Связанный контент