Wie kann Windows 7 in Bezug auf das Dateisystem vollständig zwischen Groß- und Kleinschreibung unterschieden werden?

37

Ich möchte, dass Windows 7 die Groß- und Kleinschreibung beachtet, wenn es etwas auf der Festplatte liest / schreibt (das C-Laufwerk oder ein anderes NTFS-Laufwerk).

Ich habe ein Video über Google gefunden, das besagt, dass der Registrierungsschlüssel geändert werden soll

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

auf einen Wert von 1 ( Quelle ).

Ich habe auch ein Windows-Supportelement gefunden, das Informationen zum Ändern des Registrierungsschlüssels enthält

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

Das führt zu der Annahme, dass Windows bei der Eingabe des Werts 0 bei NTFS-Dateisystemen ( Quelle ) zwischen Groß- und Kleinschreibung unterscheidet .

Ich habe das Gefühl, dass die zweite Lösung die Antwort ist, aber ich bin nicht sicher und ich möchte es nicht versuchen, ohne sicher zu sein.

Weiß jemand genau, wie Windows 7 beim Lesen / Schreiben auf das C-Laufwerk (und auf jedes andere NTFS-Laufwerk) korrekt zwischen Groß- und Kleinschreibung unterschieden werden kann?

trusktr
quelle

Antworten:

25

Sie können den HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveRegistrierungswert auf den 0von anderen Autoren vorgeschlagenen Wert festlegen . Erstellen Sie eine Datei add.regmit dem folgenden Namen und führen Sie sie aus.

Windows Registry Editor Version 5.00

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

Verwenden Sie dann Cygwin , um mit Dateinamen zu arbeiten, bei denen zwischen Groß- und Kleinschreibung unterschieden wird.

Zu diesem Zweck müssen Sie NTFS-Dateisysteme mit der posix=1Option in Ihrem bereitstellen /etc/fstab, wie in diesem Artikel vorgeschlagen . Hier ist ein Ausschnitt aus meinem 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

Sobald die oben geschehen ist, können Sie mit Groß- und Dateinamen umgehen mit bash, mc, gitusw.

Bass
quelle
6
Sie müssen neu starten, damit dies wirksam wird.
William
2
@William: Ich glaube, Sie müssen nur alle Cygwin- Prozesse und -Dienste (wie Apache , sshd usw.) beenden . Das sollte reichen, da cygwin1.dllaus dem RAM entladen wird.
Bass
3
Ich spreche von HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
William
16

Um tatsächlich 2 Dateien mit demselben Namen, aber unterschiedlicher Groß- / Kleinschreibung in demselben Verzeichnis zu erstellen, müssen Sie Unix Services 3.5 installieren, dies funktioniert jedoch nur unter 32-Bit-Windows. Dann müssen Sie "C Shell" ausführen, um die Dateien zu erstellen. Sie können die Dateien nicht über den Explorer erstellen. Einmal erstellt, spielt der Explorer nicht gut mit den Dateien. Wenn Sie die zweite umbenennen, springt der Cursor zur ersten. Außerdem können die meisten Anwendungen nur eine der Dateien öffnen, da bei ihnen die Groß- und Kleinschreibung nicht berücksichtigt wird. Wenn Sie mit 64-Bit arbeiten, installieren Sie Cygwin und ändern Sie es in Groß- und Kleinschreibung.

Ich habe versucht, während der Entwicklung ein Linux-Dateisystem zu emulieren, bei dem die Groß- und Kleinschreibung beachtet wird, um Fehler zu beheben. Es scheint der bessere Ansatz zu sein, VMWare mit einer Ubuntu-Instanz für die Entwicklung zu verwenden.

user1491819
quelle
„verwenden VMWare mit einer Instanz von Ubuntu für Entwicklung“ => Nicht der Fall mit Spielen
Петър Петров
16

Alle diese Einstellungen, die Sie im Internet finden, gelten für NFS, nicht für NTFS (beachten Sie den Unterschied)!

NFS (Network File System) ist ein Netzwerkprotokoll.

So Ändern der Registrierungsschlüssel HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive nicht , wird alles , was Sie wollen , ändern.

NTFS ist case-sensitive , aber Windows - API ist nicht , es erinnert nur den Dateinamen Fall. Dies bedeutet, dass trotz Ihrer Datei angezeigt wird, wie AbC.TXTes von abc.txtund noch zugänglich ist aBc.TxT. Dies ist eine Einschränkung von Windows, nicht von NTFS.

Die andere HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathOption deaktiviert grundsätzlich die Normalisierung von älteren 8.3-Dateinamen, die von DOS verwendet werden (bei denen es sich ausschließlich um Großbuchstaben handelt). Wenn diese Option aktiviert ist (Standardeinstellung), ABC.TXTwird sie als angezeigt Abc.txt, ist jedoch für alle anderen Varianten weiterhin verfügbar.

Genauer gesagt:

Tatsächlich hängt es von der Software ab, die auf den FS zugreift.

Wenn die WIN32-API verwendet wird (99,9% der Software), wird bei allen Aktionen die Groß- und Kleinschreibung nicht berücksichtigt. Die gesamte in Windows integrierte Software (z. B. Explorer, Eingabeaufforderung, Internet Explorer usw.) und die gesamte Verbrauchersoftware verwenden WIN32 und berücksichtigen die Groß- und Kleinschreibung nicht.

NFS Service, Java und einige andere sind POSIX und werden die Registrierungseinstellung 'obcaseinsensitiv' einhalten. Das Deaktivieren dieser Option kann jedoch zu größeren Problemen führen, da mit dieser Software Dateien erstellt werden können, auf die Windows selbst und andere Win32-Programme keinen Zugriff haben.

venimus
quelle
3
Auf FS-Ebene werden bei NTFS vor der weiteren Verarbeitung die Groß- und Kleinschreibung beachtet. Bei der Eingabe von Kleinbuchstaben werden jedoch alle Dateinamen in Großbuchstaben umgewandelt. Anschließend wird nach dieser Datei gesucht (siehe support.microsoft.com/ kb / 103657 )
Jeff F.
Du hast recht. Ich habe nur versucht, es einfacher zu erklären.
Venimus
Wie kann eine Win32-basierte Version von Java "SHORT.class" vs. "Short.class" finden, wenn sie sich im selben Verzeichnis befinden? Ich kann nicht glauben, dass es KEINEN Aufruf gibt, dies zu tun.
Ira Baxter
Ich denke, weil Java POSIX ist
venimus
2
Ich bin mir ziemlich sicher, dass die Standard-Java-Laufzeit (dh von Oracle) unter Windows nicht zwischen Groß- und Kleinschreibung unterscheidet. Wenn Sie versuchen würden, SHORT.classund Short.classin dasselbe Verzeichnis zu verschieben, würde dies nicht funktionieren. (Natürlich, wenn sie in einer .jar-Datei sind, gibt es kein Problem.)
Harry Johnston
4

Ich denke das ist wonach du suchst:

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

Auf dieser Seite wird empfohlen, den Wert HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveauf 0 zu setzen, um die Groß- und Kleinschreibung zu berücksichtigen. Ich denke, Sie haben dies bereits gefunden, und dies scheint die Standardmethode zu sein (selbst die Microsoft-KB, die Sie gefunden haben, schlägt dies vor).

Es sieht so aus, als müssten Sie die Kernel-Einstellungen ändern. Vorsicht vor Updates.

BEARBEITEN: Beachten Sie jedoch, dass einige Programme von der Unterscheidung zwischen Groß- und Kleinschreibung abhängen.

EDIT: Sie könnten wahrscheinlich eine UDF-Partition verwenden. Dieses Dateisystem unterscheidet zwischen Groß- und Kleinschreibung und funktioniert sowohl unter Windows als auch unter Linux.

Sieh dies und das .

Beatgammit
quelle
Können Sie weitere Informationen von der Seite, auf die Sie verlinken, veröffentlichen? Kopieren Sie nicht das Ganze, aber Sie können den entsprechenden Absatz kopieren und den Rest zusammenfassen.
ChrisF
Nun, die ganze Seite ist nur ein Absatz. Ich werde es aber schnell bearbeiten.
Beatgammit
Vielen Dank, tjameson. In Bezug auf Programme, die von der Unterscheidung zwischen Groß- und Kleinschreibung abhängen, ist dies in der Tat ein großes Problem. Ein Programm sucht möglicherweise nach "WINDOWS" und findet es nicht, weil es jetzt wirklich "Windows" ist, oder? Ich bin ratlos und versuche herauszufinden, wie man Dinge von Linux nach Windows kopiert. Ich befand mich in einer Situation, in der Ordner mit der gleichen Schreibweise und unterschiedlichen Großbuchstaben an einem Ort existieren.
Trusktr
Nun, das Einzige, woran ich denken kann, sind Konflikte von Hand. Wenn Sie Dateien kopieren, werden Sie von Windows gefragt, ob Sie eine Kopie zusammenführen oder erstellen möchten. Ich kann mich nicht erinnern (ich bin selbst ein Linux-Mann).
Beatgammit
Laut diesem Artikel funktioniert dies nur für Nicht-Win32-Subsysteme, gilt also nicht für NTFS.
Harrymc
4

Was Microsoft über NTFS und die Änderung der Groß- und Kleinschreibung zu sagen hat

Sieht so aus, als müssten Sie den Kernel nicht ändern, um Suchvorgänge im Netzwerk zu ermöglichen, bei denen zwischen Groß- und Kleinschreibung unterschieden wird.

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

.

Konfigurieren der Groß- und Kleinschreibung für Datei- und Ordnernamen

Gilt für: Windows Server 2003 R2

So konfigurieren Sie die Groß- und Kleinschreibung von Datei- und Ordnernamen über die Windows-Benutzeroberfläche Öffnen Sie Microsoft Services für Network File System: Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Verwaltung, und klicken Sie dann auf Microsoft Services für Network File System.

Stellen Sie bei Bedarf eine Verbindung zu dem Computer her, den Sie verwalten möchten.

Klicken Sie mit der rechten Maustaste auf Server für NFS, und klicken Sie dann auf Eigenschaften.

Klicken Sie auf die Registerkarte Filename Handling.

Führen Sie einen der folgenden Schritte aus:

Aktivieren Sie das Kontrollkästchen Groß- / Kleinschreibung bei der Suche nach Datei- und Verzeichnisnamen aktivieren, um die Suche nach Groß- / Kleinschreibung zu aktivieren.

Deaktivieren Sie das Kontrollkästchen Groß- und Kleinschreibung bei der Suche nach Datei- und Verzeichnisnamen aktivieren, um die Suche nach Groß- und Kleinschreibung zu deaktivieren.

Klicken Sie auf Übernehmen.

Wichtig Diese Änderungen werden erst nach einem Neustart von Server für NFS wirksam. Informationen zum Beenden und Starten von Server für NFS finden Sie unter Starten und Beenden von Server für NFS. Sie müssen auch die Windows-Kernel-Unterscheidung nach Groß- und Kleinschreibung deaktivieren, damit Server for NFS Dateinamen unterstützt, bei denen zwischen Groß- und Kleinschreibung unterschieden wird. Sie können die Groß- und Kleinschreibung des Windows-Kernels deaktivieren, indem Sie den folgenden Registrierungsschlüssel auf 0 setzen: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Sitzungsmanager \ Kernel DWORD "obcaseinsensitiv"

So konfigurieren Sie die Groß- und Kleinschreibung für Datei- und Ordnernamen über die Befehlszeile Öffnen Sie die Eingabeaufforderung.

Geben Sie Folgendes ein, um die Groß- und Kleinschreibung zu aktivieren:

nfsadmin server [Computername] config casesensitivelookups = yes

Geben Sie an einer Eingabeaufforderung Folgendes ein, um die Groß- und Kleinschreibung zu deaktivieren und optional die Groß- und Kleinschreibung der von Server für NFS zurückgegebenen Dateinamen anzugeben:

nfsadmin server [Computername] config casesensitivelookups = no [ntfscase = {upper | niedriger | erhalten}]

Argument> Computername = Der Name des Computers, den Sie konfigurieren möchten.

Wichtig Diese Änderungen werden erst nach einem Neustart von Server für NFS wirksam. Informationen zum Beenden und Starten von Server für NFS finden Sie unter Starten und Beenden von Server für NFS.

Hinweis Mit der Option ntfscase wird die Groß- und Kleinschreibung für das NTFS-Dateisystem festgelegt. Die Standardeinstellung für die Groß- / Kleinschreibung ist "Beibehalten" (Fall beibehalten). Geben Sie an einer Eingabeaufforderung Folgendes ein, um die vollständige Syntax für diesen Befehl anzuzeigen: nfsadmin server /?

.

Moab
quelle
1
Ich glaube nicht, dass dies mehrere Dateien mit demselben Namen zulässt, was er tun möchte.
Beatgammit
1
Dann muss er den Registry-Hack durchführen.
Moab
Gilt für: Windows Server 2008 R2
Behrouz.M
3

Microsoft Staaten ;

In NTFS wird bei Namen die Groß- / Kleinschreibung beibehalten, die Groß- / Kleinschreibung wird jedoch nicht berücksichtigt.
NTFS unterscheidet Dateinamen nicht nach Groß- und Kleinschreibung.

Wenn Sie unter Windows die Unterscheidung zwischen Groß- und Kleinschreibung zulassen, kann Malware Dateien erstellen, auf die der Benutzer nicht zugreifen oder die er nicht löschen kann. Aus gutem Grund ist dies nicht zulässig.

In jedem Fall bin ich mir ziemlich sicher, dass Windows abstürzt und eine Neuinstallation die einzige Lösung ist, wenn Sie es schaffen, NTFS zwischen Groß- und Kleinschreibung zu unterscheiden.

Harrymc
quelle
Sie haben auch Recht, dass dies ein Sicherheitsproblem darstellt. Beispielsweise könnte eine Version von edit.exe, die mit einem Trojaner infiziert ist und den Namen EDIT.EXE trägt, im selben Verzeichnis wie edit.exe gespeichert werden. Wenn ein Benutzer edit an einer Windows-Eingabeaufforderung eingibt könnte die Trojaner-Version (EDIT.EXE) anstelle der Standardversion ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab
Windows wird wahrscheinlich nicht abstürzen, wenn Sie die Schlüsseldateien / -ordner nicht umbenennen. Ich bin mir ziemlich sicher, dass Windows sicherstellt, dass das richtige Gehäuse verwendet wird. Tatsächlich wird es sogar empfohlen.
Beatgammit
Hmm, das ist interessant, Jameson. Können Sie einen Link zu dieser Empfehlung bereitstellen?
Trusktr
11
Wenn Malware Schreibzugriff auf Ihre Festplatte erhält, haben Sie große Probleme, unabhängig davon, ob Ihr Dateisystem zwischen Groß- und Kleinschreibung unterscheidet oder nicht. #redherring
Leopd
3
Die Registrierung steckt voller Verweise auf Systemdateien mit einer extrem inkonsistenten Groß- und Kleinschreibung. Die Unterscheidung zwischen Groß- und Kleinschreibung würde einen massiven Bruch verursachen.
Kreemoweet