Tutte le versioni di Windows non fanno distinzione tra maiuscole e minuscole?


18

So che il sistema operativo Windows non è (in genere) sensibile al maiuscolo / minuscolo. È vero per tutti i sistemi operativi Windows (da Windows 95 a Windows 7)? Esiste un'impostazione del Registro di sistema per rendere case sensitive Windows?


2
Sì, come tutte le versioni di MS-DOS da cui è stato ereditato questo attributo. (Ovviamente MS-DOS non ha conservato il caso, quindi le cose sono andate avanti :-).)
Richard

Maiuscole e minuscole rispetto a cosa? Nomi dei file? Le password?
Peter Mortensen,

Risposte:


15

Sì, questo è vero per tutte le versioni di Windows. Non è possibile aumentare la distinzione tra maiuscole e minuscole di Windows. Tieni presente, tuttavia, che alcune app che sono state originariamente sviluppate per Unix / Linux e successivamente portate potrebbero essere sensibili al maiuscolo / minuscolo. Cygwin, ad esempio, fa distinzione tra maiuscole e minuscole. Questo comportamento è estremamente raro però.


7
"Non c'è modo di fare distinzione tra maiuscole e minuscole di Windows." non è abbastanza preciso. Esistono modi per rendere le parti di Windows sensibili al maiuscolo / minuscolo, come spiegato nelle altre risposte.
sleske,

È vero che dal punto di vista dell'utente , i nomi dei file di Windows non fanno distinzione tra maiuscole e minuscole e non esiste un modo (semplice) per cambiarlo.
sleske,

Alcuni aspetti di Windows possono fare distinzione tra maiuscole e minuscole, ma si basano sulle capacità di altri PC. Il salvataggio in una directory condivisa che si trova realmente su un PC Linux consentirà di utilizzare nomi di file con distinzione tra maiuscole e minuscole. Ciò è dovuto al FILESYSTEM come ha detto @sleske, non perché "è Windows"
UtahJarhead,

1
Questo non è del tutto vero. È possibile rendere più sicure le versioni precedenti di Windows e alcune versioni desktop con Servizi Windows per UNIX.
Keltari,

1
@Matt Questa risposta non è corretta (anche se sono le risposte appropriate pubblicate). Non hai abilitato la distinzione tra maiuscole e minuscole. superuser.com/questions/266110/… Devo archiviare un file testfile e Testfile. /bIn/BaShnon funziona sul mio sistema.
William,

8

In realtà, questo dipende dal sottosistema API / Windows che tu (il tuo programma) usi.

Se si utilizza " API Windows " (lo standard per le app di Windows), i nomi dei file non fanno distinzione tra maiuscole e minuscole. Tuttavia, se si utilizza il sottosistema POSIX (noto anche come Servizi Windows per Unix), è possibile abilitare la distinzione tra maiuscole e minuscole.

Vedi ad esempio questo articolo di supporto MS: abilita il comportamento con distinzione tra maiuscole e minuscole con Windows XP e sottosistema Interix o SFU


5

Cygwin cerca di emulare Unix. Pertanto, è necessario ereditare la distinzione tra maiuscole e minuscole per non interrompere le applicazioni. Windows su se stesso non fa distinzione tra maiuscole e minuscole. Riguarda il file system. Puoi leggere di più al riguardo in File system, File system in Microsoft Windows (Wikipedia).


Corretta. NTFS è tra maiuscole e minuscole, è disattivata solo in Windows. Uno può abilitarlo ma è estremamente unsupported.. per così dire.
Apache,

Questo è diretto all'OP non a MijndertStuij, ma non volevo calpestarlo. Merita il rappresentante su questo. Che si tratti di FAT (come le versioni MS-DOS e Windows originali) o NTFS (Windows NT e versioni successive), non fanno distinzione tra maiuscole e minuscole. Noterai un po 'queste differenze se salvi i file su un filesystem Linux su Samba (cugino di File and Print Sharing).
UtahJarhead,

Dalla pagina NTFS di Wikipedia: caratteri consentiti nei nomi di file. - Nello spazio dei nomi Posix, qualsiasi unità di codice UTF-16 (case sensitive) tranne U + 0000 (NUL) e / (barra). Nello spazio dei nomi Win32, qualsiasi unità di codice UTF-16 (senza distinzione tra maiuscole e minuscole) tranne U + 0000 (NUL) / (barra) \ (barra rovesciata): (due punti) * (asterisco)? (Punto interrogativo) "(virgoletta) <(minore di)> (maggiore di) e | (pipe) [5]
UtahJarhead

Prova a correre /bIn/BaShsu Cygwin e dimmi di nuovo che è case sensitive.
Matt,

5

Microsoft ha aggiunto un nuovo flag (attributo) maiuscolo / minuscolo che può essere applicato alle directory (cartelle) NTFS. Per le directory che hanno questo flag impostato (abilitato), tutte le operazioni sui file in quella directory fanno distinzione tra maiuscole e minuscole, indipendentemente dal fatto che sia stato specificato FILE_FLAG_POSIX_SEMANTICS. Ciò significa che se si hanno due file che differiscono solo per caso in una directory contrassegnata come case sensitive, tutte le applicazioni saranno in grado di accedervi.

A partire dalla build 17107 di Windows 10 , Microsoft ha aggiunto la possibilità di visualizzare e modificare questo flag al comando fsutil.exe.

Per verificare se una directory fa distinzione tra maiuscole e minuscole, eseguire il comando seguente:

fsutil.exe file queryCaseSensitiveInfo <path>

Per contrassegnare una directory come maiuscole o minuscole, rispettivamente:

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable

4

Questo è da qui . È possibile impostare il HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivevalore del registro 0come suggerito da altri autori. Creare un file denominato add.regcon il seguente contenuto ed eseguirlo.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000

Quindi utilizzare Cygwin per lavorare con nomi di file con distinzione tra maiuscole e minuscole.

Per fare ciò, è necessario montare i filesystem NTFS con l' posix=1opzione nel tuo /etc/fstab, come suggerisce questo articolo . Ecco un frammento dal mio fstab:

none                    /cygdrive       cygdrive        binary,posix=1,user             0 0
C:                      /cygdrive/c     ntfs            binary,posix=1,user,auto        0 0
C:/Users                /home           ntfs            binary,posix=1,user,auto        0 0

Una volta che quanto sopra è fatto, sarete in grado di affrontare con nomi di file case-sensitive utilizzando bash, mc,git etc.

Assicurati di riavviare dopo aver modificato entrambi.


3

Barfieldmv è corretto. Il filesystem fa infatti distinzione tra maiuscole e minuscole e i file vengono archiviati nel loro caso appropriato. Il livello di accesso ai file è responsabile della rimozione del caso quando si abbinano i file a nuovi descrittori di file


1
Potete fornire ulteriori dettagli su come funziona questa astrazione tra il filesystem e l'utente (ovvero fornire un esempio passo dopo passo)? Dovresti anche rispondere alle domande reali dell'op su precedenti sistemi operativi e se è possibile forzare il comportamento sensibile al maiuscolo / minuscolo.
MaQleod,

Non sarò in grado di fornire una risposta molto completa al giorno d'oggi poiché sono un grande secchione Linux ora .. Comunque posso offrire quanto segue. I servizi Windows per Unix utilizzano gli stessi filesystem del sistema operativo, in particolare, non utilizzando le API che abilitano l'insensibilità al maiuscolo / minuscolo. Vedere: support.microsoft.com/kb/817921 per informazioni su come Case 'Preserving' è uguale a Case 'Sensitive', tuttavia i livelli di accesso comuni consentono Case 'Ignorance' :)
whardier,

Si potrebbe dire che Windows non è sensibile al maiuscolo / minuscolo, ma solo al maiuscolo / minuscolo. Ciò significa che (windows) sa se la lettera è maiuscola o minuscola e accetta entrambi. Non legge l'uno o l'altro come ed errore.
IGRACH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.