Come si fa a Windows 7 di distinguere tra maiuscole e minuscole rispetto al filesystem?


37

Voglio rendere sensibile a maiuscole e minuscole di Windows 7 quando legge / scrive qualsiasi cosa sul disco rigido (l'unità C o qualsiasi altra unità NTFS).

Ho trovato un video tramite Google che dice di cambiare la chiave di registro

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath

ad un valore di 1 ( fonte ).

Ho anche trovato un elemento di supporto di Windows che dice qualcosa sulla modifica della chiave di registro

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive

ciò mi porta a supporre che l'inserimento di un valore pari a 0 renderà Windows sensibile al maiuscolo / minuscolo con i filesystem NTFS ( sorgente ).

Ho la sensazione che la seconda soluzione sia la risposta, ma non ne sono sicuro e non voglio provarlo senza esserne sicuro.

Qualcuno sa con certezza qual è il modo corretto di rendere sensibile a maiuscole e minuscole di Windows 7 quando legge / scrive sull'unità C (e su qualsiasi altra unità NTFS)?

Risposte:


25

È 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 il sopra è fatto, sarete in grado di affrontare con nomi di file case-sensitive utilizzando bash, mc, gitetc.


6
È necessario riavviare affinché questo abbia effetto.
William,

2
@William: credo che devi solo terminare tutti i processi e servizi Cygwin (come Apache , sshd , ecc.). Questo dovrebbe essere sufficiente, come cygwin1.dllverrà scaricato dalla RAM.
Bass

3
Sto parlando di HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
William

16

Per poter effettivamente creare 2 file con lo stesso nome ma caso diverso nella stessa directory, è necessario installare Unix Services 3.5 ma questo funziona solo su Windows a 32 bit. Quindi è necessario eseguire "C Shell" per creare i file. Non è possibile creare i file tramite explorer. Una volta creato, explorer non gioca bene con i file. Se vai a rinominare il secondo, il cursore passa al primo. Inoltre, la maggior parte delle applicazioni può aprire solo uno dei file, poiché si aspettano un file system senza distinzione tra maiuscole e minuscole. Se sei su 64 bit, installa Cygwin e modificalo in maiuscolo / minuscolo.

Stavo cercando di emulare un file system sensibile al maiuscolo / minuscolo di Linux per scopi di debug durante lo sviluppo. Sembra che l'approccio migliore sia usare VMWare con un'istanza di Ubuntu per lo sviluppo.


"usa VMWare con un'istanza di Ubuntu per lo sviluppo" => Non è il caso dei giochi
Петър Петров

16

Tutte queste impostazioni che puoi trovare sul web sono per NFS non per NTFS (nota la differenza)!

NFS (Network File System) è un protocollo di rete.

Cambiando così la chiave di registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive NON cambierà tutto ciò che si desidera.

NTFS fa distinzione tra maiuscole e minuscole, ma NON l'API di Windows , ricorda solo il caso del nome file. Ciò significa che nonostante il tuo file sia visualizzato in AbC.TXTquanto è ancora accessibile da abc.txte aBc.TxT. Questa è una limitazione di Windows, non di NTFS.

L'altro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathsostanzialmente disattiva la normalizzazione dei nomi di file legacy 8.3 usati da DOS (che sono tutti maiuscoli). Quando è acceso (impostazione predefinita)ABC.TXT verrà visualizzato come Abc.txt, ma sarà comunque accessibile da tutte le altre varianti.

Per essere più accurati:

In realtà dipende dal software che accede a FS.

Se utilizza l'API WIN32 (che fa il 99,9% del software) non farà distinzione tra maiuscole e minuscole qualunque cosa tu faccia. Tutto il software integrato in Windows (come Explorer, prompt dei comandi, Internet Explorer e così via) e tutto il software di consumo disponibile utilizza WIN32 ed è sempre senza distinzione tra maiuscole e minuscole.

Servizio NFS, Java e alcuni altri sono POSIX e obbediranno alle impostazioni del registro "obcaseinsensitive". Tuttavia la disattivazione dell'opzione potrebbe effettivamente causare problemi maggiori, poiché questo software può creare file non accessibili da Windows stesso e da altri software Win32.


3
In realtà, a livello di FS prima dell'ulteriore elaborazione, è sensibile al maiuscolo / minuscolo, tuttavia, NTFS traduce tutti i nomi di file in maiuscolo e quando viene immesso uno con caratteri minuscoli lo traduce in maiuscolo, quindi cerca tale file (vedere support.microsoft.com/ kb / 103657 )
Jeff F.

Hai ragione. Ho appena provato a spiegarlo in modo più semplice.
venimus,

Quindi, come fa una versione basata su Win32 di java a trovare "SHORT.class" vs. "Short.class" se si trovano nella stessa directory? Non riesco a credere che NON vi sia alcuna chiamata a fare questo.
Ira Baxter,

Penso che Java sia POSIX
venimus,

2
Sono abbastanza sicuro che il runtime Java standard (ovvero da Oracle) non fa distinzione tra maiuscole e minuscole su Windows. Se provassi a mettere SHORT.classe Short.classnella stessa directory, non funzionerebbe. (Naturalmente se si trovano all'interno di un file .jar non c'è problema.)
Harry Johnston,

4

Penso che questo sia quello che stai cercando:

http://www.chilkatsoft.com/p/p_454.asp

Questa pagina consiglia l'impostazione HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive su 0 per renderlo sensibile al maiuscolo / minuscolo. Penso che tu l'abbia già trovato, e questo sembra il modo standard per farlo (anche il Microsoft KB che hai trovato lo suggerisce).

Sembra che tu debba cambiare le impostazioni del kernel. Attenzione agli aggiornamenti però.

EDIT: attenzione però, alcuni programmi potrebbero dipendere dall'insensibilità del caso.

EDIT: probabilmente potresti usare una partizione UDF. Questo filesystem fa distinzione tra maiuscole e minuscole e penso che funzioni sia su Windows che su Linux.

Vedi questo e questo .


Puoi pubblicare maggiori informazioni dalla pagina a cui ti colleghi per favore. Non copiare tutto ma puoi copiare il paragrafo pertinente e riassumere il resto.
ChrisF,

Bene, l'intera pagina è solo un paragrafo. Farò una rapida modifica però.
beatgammit,

Grazie Tjameson. Per quanto riguarda i programmi che potrebbero dipendere dall'insensibilità ai casi, questo è davvero un grosso problema. Un programma potrebbe cercare "WINDOWS" e non trovarlo perché è davvero "Windows" ora, giusto? Scatta, non riesco a capire come copiare le cose da Linux a Windows, e mi sono trovato in una situazione in cui esistono cartelle dello stesso spelling con diversi limiti in un'unica posizione.
trusktr,

Bene, l'unica cosa a cui riesco a pensare è i conflitti manualmente. Se copi i file, Windows dovrebbe chiederti se desideri unire o fare una copia o qualcosa del genere. Non ricordo (sono anch'io un uomo Linux).
beatgammit

Secondo questo articolo questo funziona solo per sottosistemi non Win32, quindi non si applica a NTFS.
harrymc,

4

Cosa dice Microsoft su NTFS e la modifica della distinzione tra maiuscole e minuscole.

Sembra che non sia necessario modificare il kernel per consentire ricerche con distinzione tra maiuscole e minuscole sulla rete.

http://technet.microsoft.com/en-us/library/cc783185(WS.10).aspx

.

Configurazione della distinzione tra maiuscole e minuscole per i nomi di file e cartelle

Si applica a: Windows Server 2003 R2

Per configurare la distinzione tra maiuscole e minuscole per i nomi di file e cartelle utilizzando l'interfaccia di Windows Aprire Servizi Microsoft per il file system di rete: fare clic su Start, scegliere Programmi, Strumenti di amministrazione, quindi Servizi Microsoft per file system di rete.

Se necessario, connettiti al computer che desideri gestire.

Fare clic con il pulsante destro del mouse su Server per NFS e quindi fare clic su Proprietà.

Fare clic sulla scheda Gestione nome file.

Effettuare una delle seguenti operazioni:

Per abilitare le ricerche con distinzione tra maiuscole e minuscole e nomi di directory, selezionare la casella di controllo Abilita ricerche con distinzione tra maiuscole e minuscole.

Per disabilitare le ricerche di nomi di file e directory con distinzione tra maiuscole e minuscole, deselezionare la casella di controllo Abilita ricerche con distinzione tra maiuscole e minuscole.

Fai clic su Applica.

Importante Queste modifiche non avranno effetto fino al riavvio di Server per NFS. Per informazioni su come arrestare e avviare Server per NFS, vedere Avvio e arresto di Server per NFS. È inoltre necessario disabilitare la distinzione tra maiuscole e minuscole del kernel di Windows affinché Server per NFS supporti i nomi di file con distinzione tra maiuscole e minuscole. È possibile disabilitare la distinzione tra maiuscole e minuscole del kernel di Windows deselezionando la seguente chiave di registro su 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD "obcaseinsensitive"

Per configurare la distinzione tra maiuscole e minuscole per i nomi di file e cartelle utilizzando la riga di comando Aprire il prompt dei comandi.

Per abilitare la distinzione tra maiuscole e minuscole, digitare quanto segue:

nfsadmin server [NomeComputer] config caseensitivelookups = yes

Per disabilitare la distinzione tra maiuscole e minuscole e, facoltativamente, specificare il caso dei nomi di file restituiti da Server per NFS, al prompt dei comandi digitare quanto segue:

nfsadmin server [NomeComputer] config caseensitivelookups = no [ntfscase = {upper | inferiore | conserva}]

Argomento> Nome computer = Il nome del computer che si desidera configurare.

Importante Queste modifiche non avranno effetto fino al riavvio di Server per NFS. Per informazioni su come arrestare e avviare Server per NFS, vedere Avvio e arresto di Server per NFS.

Nota L'opzione ntfscase imposta la distinzione tra maiuscole e minuscole per il file system NTFS. La sensibilità predefinita del caso è preservata (preserva caso). Per visualizzare la sintassi completa per questo comando, al prompt dei comandi digitare: nfsadmin server /?

.


1
Non credo che ciò consenta di avere più file con lo stesso nome, che è quello che vuole fare.
beatgammit,

1
Quindi dovrà fare l'hack del registro.
Moab,

Si applica a: Windows Server 2008 R2
Behrouz.M,

3

Stati di Microsoft ;

In NTFS, i nomi mantengono il maiuscolo / minuscolo, ma non fanno distinzione tra maiuscole e minuscole.
NTFS non fa distinzione di nomi di file in base al caso.

Consentire la distinzione tra maiuscole e minuscole in Windows consentirebbe ai malware di creare file a cui l'utente non può accedere o eliminare, quindi non è consentito per una buona ragione.

In ogni caso, sono abbastanza sicuro che se riuscirai a fare distinzione tra maiuscole e minuscole NTFS, Windows andrà in crash e la reinstallazione sarà l'unica soluzione.


Hai anche ragione nel dire che presenta un problema di sicurezza. "Ad esempio, una versione di edit.exe infetta da un programma dannoso di tipo trojan e denominata EDIT.EXE potrebbe essere memorizzata nella stessa directory di edit.exe. Se un utente dovesse digitare edit al prompt dei comandi di Windows , la versione del cavallo di Troia (EDIT.EXE) potrebbe essere eseguita invece della versione standard ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab,

Probabilmente non andrà in crash Windows a meno che non si rinominino file / cartelle chiave. Sono abbastanza sicuro che Windows si assicuri di utilizzare il caso corretto, infatti, lo raccomandano persino.
beatgammit,

Hmm, questo è interessante James. Potete fornire un link a quella raccomandazione?
trusktr,

11
Se il malware ottiene l'accesso in scrittura al tuo disco, hai grossi problemi se il tuo filesystem fa distinzione tra maiuscole e minuscole. #redherring
Leopd,

3
Il registro è pieno zeppo di riferimenti a file di sistema con un utilizzo dei casi selvaggiamente incoerente. La distinzione tra maiuscole e minuscole causerebbe una rottura massiccia.
kreemoweet,
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.