Можно ли предположить, что локальные и сетевые пути Windows не чувствительны к регистру?
Пути файлов в среде Windows не чувствительны к регистру?
Ответ 1
Да. Windows (локальные) файловые системы, включая NTFS, а также FAT и варианты, нечувствительны к регистру (обычно). Основная реализация сетевой файловой системы может быть чувствительной к регистру, однако большинство программ, которые позволяют Windows получить к ней доступ (например, SMB), автоматически создадут файловые системы, чувствительные к регистру как нечувствительный к Windows.
Подробнее, я прочитал раздел в статье Википедии о именах файлов.
Ответ 2
Чувствительность к регистру в Windows фактически реализована в том, как приложение открывает файлы. NTFS может быть файловой системой, чувствительной к регистру, и может с радостью хранить файлы с одинаковыми именами, различающимися по отдельности в одном каталоге.
В Windows все файлы в конечном итоге открываются с помощью API CreateFile - если флажок FILE_FLAG_POSIX_SEMANTICS
передается на вызов (и файл доступ к системе зависит от регистра), тогда файл будет открыт на основе точного совпадения имени. Если FILE_FLAG_POSIX_SEMANTICS
не передается, то файловая система открывает файл, не учитывающий регистр, и откроет один из файлов с соответствующим именем. Если есть более одного, то undefined относительно того, какой из них фактически открыт.
Большинство реализаций выполнения C и С++ в Windows не предоставляют никакого доступа к этому механизму и никогда не используют этот флаг, поэтому единственный способ получить доступ к зависящим от регистра поведения поведениям - это использовать API Windows напрямую.
tl; dr - Ваше языковое исполнение, вероятно, подвергает вашу файловую систему нечувствительности к регистру или сохранению регистра. Если вы используете API Windows напрямую, вы можете получить доступ к поддерживаемым файловым системам в полной мере. Senstive.