Включение режима с учетом регистра для папок в Windows 10

Как вы, возможно, уже знаете, файловая система Windows NTFS рассматривает имена файлов и папок как нечувствительные к регистру. Например, для ОС и приложений MyFile.txt и myfile.txt — это один и тот же файл. Однако в Linux все иначе. Для этой ОС это два разных файла. Это различие в поведении может создать проблемы для пользователей WSL. Для их решения в Windows 10 предусмотрена возможность включения режима чувствительности к регистру для папок.

Если вы использовали Windows Подсистема для Linux, вы, вероятно, знаете, что она позволяет обрабатывать ваши файловые системы Windows (смонтированные в/mnt/c,/mnt/d и т. Д.) Как чувствительные к регистру. Это означает, среди прочего, что вы можете создавать файлы, имена которых отличаются только регистром (например, foo.txt и FOO.TXT).

Однако использовать эти файлы в Windows было невозможно. Поскольку приложения Windows обрабатывают файловую систему как нечувствительную к регистру, они не могут различать файлы, имена которых отличаются только регистром. Хотя проводник будет отображать оба файла, только один будет открыт независимо от того, какой из них вы щелкнули.

Начиная с Windows Insider build 17093, появился новый способ обработки файлов с учетом регистра в Windows: -directory чувствительность к регистру. Эта возможность была добавлена, чтобы дать пользователю лучшую совместимость при использовании файлов с учетом регистра. Также вы можете использовать его с обычными приложениями Windows. Начиная с Windows 10 Build 17110, это поведение используется по умолчанию.

Подробнее

Чувствительность к регистру в Windows

Семейство Windows NT операционных систем (включая Windows 10) всегда имела возможность выполнять операции файловой системы с учетом регистра. Приложения могут передавать флаг FILE_FLAG_POSIX_SEMANTICS в CreateFile API, чтобы указать, что они хотят, чтобы путь обрабатывался с учетом регистра. Однако по соображениям совместимости существует глобальный раздел реестра, который отменяет это поведение; когда этот ключ установлен, все файловые операции нечувствительны к регистру, даже если установлен флаг FILE_FLAG_POSIX_SEMANTICS . Начиная с Windows XP, это используется по умолчанию.

Подсистема Windows для Linux использует другой механизм, который сам обходит этот ключ реестра, позволяя нам выполнять операции файловой системы с учетом регистра. Это то, что позволяет приложениям Linux, работающим в WSL, использовать имена файлов, которые различаются только регистром, так же, как они могут в реальном Linux, даже с этим глобальным ключом реестра.

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

Чувствительность к регистру для каждого каталога

Чтобы решить эту проблему, Microsoft добавила новый флаг, чувствительный к регистру, который можно применить к каталогам. Для каталогов, для которых установлен этот флаг, все операции с файлами в этом каталоге чувствительны к регистру, независимо от того, был ли указан FILE_FLAG_POSIX_SEMANTICS . Это означает, что если у вас есть два файла, которые отличаются только регистром в каталоге, отмеченном как чувствительный к регистру, все приложения смогут получить к ним доступ.

Включить режим с учетом регистра для папок

Чтобы включить или отключить эту функцию, вы должны использовать встроенное приложение fsutil.exe.

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

  1. Откройте командную строку с повышенными привилегиями.
  2. Введите следующую команду:
     fsutil.exe file setCaseSensitiveInfo "полный путь  в вашу папку "enable 

    Замените часть пути на правильный путь, соответствующий вашему компьютеру.
    Например,

     fsutil.exe file setCaseSensitiveInfo" C  :  data  Winaero  Linux "enable 

  3. Готово.

Теперь вы можете создать два файла с одинаковыми именами и только с разницей в регистре. Windows 10 правильно обработает их в этой конкретной папке.

Чтобы увидеть статус функции для папки, запустите команду

fsutil.exe file queryCaseSensitiveInfo «полный путь к вашей папке»

Например,

 fsutil.exe file queryCaseSensitiveInfo  «C:  data  Winaero  Linux» 

Вы увидите что-то вроде этого:

Наконец, , чтобы отключить режим с учетом регистра для папок , выполните следующую команду в командной строке, открытой от имени администратора:

 fsutil.exe файл setCaseSensitiveInfo "C:  data  Winaero  Linux" disable 

Используйте правильный путь к папке, и все готово.
Примечание: Отключение атрибута CaseSensitiveInfo для непустых папок не поддерживается. Перед отключением папки необходимо удалить все файлы.



Оцените статью
digitdocom.ru
Добавить комментарий