Windows API для доступа к чувствительным к регистру путям (Bash-on-Ubuntu-on-Windows)
Bash-on-Ubuntu-on-Windows поддерживает регистрозависимые пути к файлам. Это означает, что я могу создать два файла или каталоги, имена которых отличаются только заглавными буквами. У меня проблемы с доступом к этим файлам.
Бег
bash -c "touch Magic ; mkdir magic ; echo Secret! > magic/secret"
Создает имена файловMagic
каталог с именемmagic
и имена файловsecret
в этом каталоге.
bash -c "ls -lR"
доходность
.:
total 0
drwxrwxrwx 2 root root 0 Aug 23 10:37 magic
-rwxrwxrwx 1 root root 0 Aug 23 10:37 Magic
./magic:
total 0
-rwxrwxrwx 1 root root 8 Aug 23 10:37 secret
(Я не уверен, почему я получаюroot
, поскольку это не пользователь по умолчанию, но это не похоже на мой вопрос.)
Сейчас, покаbash
может легко получить доступ кmagic/secret
Файл в каталоге, Windows, кажется, рассматривает и каталог, и файл как одно и то же. Поэтому, дважды щелкнув каталог, я получаю сообщение об ошибке «имя каталога недействительно».
То же самое касается использованияcd
как я получаюThe directory name is invalid.
распечатанный.
Существуют ли какие-либо API, которые позволяют мне получать доступ к этим чувствительным к регистру путям или создавать их? Кажется, что обычные API-интерфейсы Windows полностью игнорируют регистр символов при доступе к существующим файлам.