Filstier i Windows-miljøet er ikke sagerfølsomme?

Indlæg af Hanne Mølgaard Plasc

Problem



Er det sikkert at antage, at Windows lokal- og netværksfilstier ikke er følsom?

Bedste reference


Ja. Windows (lokale) filsystemer, herunder NTFS, samt FAT og varianter, er ukontrollerede (normalt). Den underliggende implementering af et netværksfilsystem kan være sagerfølsomt, men de fleste software, der gør det muligt for Windows at få adgang til det (f.eks. SMB), vil automatisk gøre sagerfølsomme filsystemer tilsyneladende uhensigtsmæssige over for Windows. [3]


For detaljer, læser jeg afsnittet i Wikipedia-artiklen om filnavne. [4]

Andre referencer 1


Sagsfølsomhed på Windows implementeres faktisk i, hvordan applikationen åbner filerne. NTFS kan være et case-sensitive filsystem og kan med glæde lagre filer med identiske navne, der kun afviger fra sag til sag i samme mappe.


I Windows åbnes alle filer i sidste ende via CreateFile API - Hvis FILE\_FLAG\_POSIX\_SEMANTICS -flagget sendes til opkaldet (og det filsystem, der bliver adgang til, er nativt case-sensitive), åbnes filen baseret på en nøjagtig navnekamp . Hvis FILE\_FLAG\_POSIX\_SEMANTICS ikke er bestået, åbner filsystemet en case-insensitive fil og åbner en af ​​filerne med et matchende navn. Hvis der er mere end en, er det ubestemt, hvilken der rent faktisk er åbnet. [5]


De fleste C og C ++ runtime implementeringer på Windows giver ikke nogen adgang til denne mekanisme og bruger aldrig dette flag, så den eneste måde at få adgang til case-sensitive behaviors er at bruge Windows API direkte.


tl; dr - Din sprog runtime udsætter sandsynligvis dit filsystem som uhensigtsmæssigt eller tilfældigt bevaret. Du kan, hvis du bruger Windows API direkte, få adgang til understøttede filsystemer helt tilfældet senstive.