Как вы, возможно, уже знаете, файловая система 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: учет регистра для каждого каталога. Эта возможность была добавлена, чтобы дать пользователю лучшую совместимость при использовании файлов с учетом регистра. Также вы можете использовать его с обычными приложениями Windows. Начиная с Windows 10 Build 17110, это поведение используется по умолчанию.
Подробнее
Чувствительность к регистру в Windows
Операционные системы семейства Windows NT (включая Windows 10) всегда имели возможность выполнять операции файловой системы с учетом регистра. Заявки могут пройтиFILE_FLAG_POSIX_SEMANTICS
флаг кCreateFile
API, чтобы указать, что они хотят, чтобы путь обрабатывался с учетом регистра. Однако по соображениям совместимости существует глобальный раздел реестра, который отменяет это поведение; когда этот ключ установлен, все файловые операции нечувствительны к регистру, даже еслиFILE_FLAG_POSIX_SEMANTICS
указан флаг. Начиная с Windows XP, это значение по умолчанию.
как удалить старые фотографии с iphone
Подсистема Windows для Linux использует другой механизм, который сам обходит этот раздел реестра, что позволяет нам выполнять операции файловой системы с учетом регистра. Это то, что позволяет приложениям Linux, работающим в WSL, использовать имена файлов, которые различаются только регистром, точно так же, как они могут в реальном Linux, даже с этим набором ключей глобального реестра.
К сожалению, в результате остаются файлы, недоступные для приложений Windows. Хотя вы можете изменить глобальный раздел реестра, это будет работать только для тех приложений, которые используютFILE_FLAG_POSIX_SEMANTICS
, и это изменит поведение всех файлов на всех дисках, что может быть не предназначено и может нарушить работу некоторых приложений.
Чувствительность к регистру для каждого каталога
Чтобы решить эту проблему, Microsoft добавила новый чувствительный к регистру флаг, который можно применять к каталогам. Для каталогов, для которых установлен этот флаг, все операции с файлами в этом каталоге чувствительны к регистру, независимо от того,FILE_FLAG_POSIX_SEMANTICS
было указано. Это означает, что если у вас есть два файла, которые отличаются только регистром в каталоге, отмеченном как чувствительный к регистру, все приложения смогут получить к ним доступ.
Включить режим с учетом регистра для папок
Чтобы включить или отключить эту функцию, вы должны использовать встроенное приложение fsutil.exe.
Включение режима с учетом регистра для папок сделайте следующее.
- открыто командная строка с повышенными привилегиями .
- Введите следующую команду:
fsutil.exe file setCaseSensitiveInfo 'полный путь к вашей папке' включить
Замените часть пути на правильный путь, соответствующий вашему компьютеру.
Например,Файл fsutil.exe setCaseSensitiveInfo 'C: data Winaero Linux' включить
- Вы сделали.
Теперь вы можете создать два файла с одинаковыми именами и только с разницей в регистре. Windows 10 правильно обработает их в этой конкретной папке.
смотреть фильмы на Nintendo Switch sd card
Чтобы увидеть статус функции для папки, выполните команду
fsutil.exe file queryCaseSensitiveInfo 'полный путь к вашей папке'
Например,
Запрос файла fsutil.exeCaseSensitiveInfo 'C: data Winaero Linux'
Вы увидите что-то вроде этого:
значок facebook на рабочем столе для Windows 7
В заключение, отключить режим с учетом регистра для папок , выполните следующую команду в командной строке, открытой от имени администратора:
Файл fsutil.exe setCaseSensitiveInfo 'C: data Winaero Linux' отключить
Используйте правильный путь к папке, и все готово.
Заметка: Отключение атрибута CaseSensitiveInfo для непустых папок не поддерживается. Перед отключением папки необходимо удалить все файлы.
Вот и все.