Wie erstelle ich ein virtuelles Laufwerk mit einem Dateisystem, das die Groß- und Kleinschreibung berücksichtigt, unter Windows 7?

1879
Ivarpoiss

Es ist mir egal, welches Dateisystem es genau sein wird, ich brauche nur die Dateipfade, um die Groß- / Kleinschreibung zu berücksichtigen.

Möglicherweise ein Verhalten ähnlich einer Samba-Freigabe in einer Linux-Box, bei der die Groß- / Kleinschreibung aktiviert ist. Das wäre perfekt, nur dass ich die Festplatte lokal speichern muss.

Gibt es dafür Treiber / Tools?

Ich habe bereits ein paar ext2-Treiber für Windows ausprobiert, die zu diesem Zweck nicht funktionierten :( ( http://www.fs-driver.org/ und http://www.fs-driver.org/ )

5
Dies ist ein Fallback von DOS, bei dem Dateinamen nicht zwischen Groß- und Kleinschreibung unterschieden. MS-Windows ist so konzipiert, dass es mit dieser benutzerfreundlichen Funktion kompatibel ist. Wenn NTFS plötzlich auf Groß- und Kleinschreibung umgestellt wurde, würden leider viele Dinge fehlschlagen (und das Betriebssystem würde wahrscheinlich nicht booten), da Sie in der gesamten Windows-Registrierung die Unterschiede zwischen Groß- und Kleinschreibung finden können (zB , C: / WINDOWS /, C: / Windows, C: / windows usw.) und in verschiedenen Konfigurationsdateien (und möglicherweise auch einige hartcodierte Dateien). Windows und viele Anwendungen würden einige wichtige Schritte zur Unterstützung von Laufwerk C: erfordern. Randolf Richardson vor 13 Jahren 0
Schauen Sie sich diesen Beitrag an, ich denke, er könnte Ihnen helfen. http://superuser.com/questions/266110/how-do-you-wow-windows-7-fully-case-sensitive-mit-respect-auf-the-filesystem samack vor 13 Jahren 0
Das war es, was ich eigentlich gefragt habe: Wie vermeide ich, dass die Behandlung von NTFS-Dateien unter Windows global von Groß- und Kleinschreibung abhängig ist? Wie diese ext2-Treiber da oben. Die einzige Voraussetzung ist, dass sie die Groß- und Kleinschreibung beachten müssen, wenn sie Dateien identifizieren. Ivarpoiss vor 13 Jahren 0

3 Antworten auf die Frage

3
SecurityMatt

Die einfache Antwort lautet nein. Die lange Antwort ist ...

NTFS speichert Dateinamen in Groß- und Kleinschreibung (NTFS kann README.txt und readme.txt im selben Verzeichnis enthalten), und sogar der Windows-Dateimanager kann intern Groß- und Kleinschreibung an Dateinamen über die Syscalls NtOpenFile / NtCreateFile verwalten.

Unglücklicherweise wird die Win32-Funktion CreateFile (die überall verwendet wird, einschließlich von fopen) intern NtCreateFile mit dem OBJ_CASE_INSENSITIVE-Flag aufrufen. Dies bedeutet, dass alle Anwendungen, die CreateFile verwenden, die Groß- und Kleinschreibung Ihres Dateisystems beachten. In der Praxis bedeutet dies, dass alle Anwendungen Ihr Dateisystem unabhängig von der Groß- und Kleinschreibung betrachten, unabhängig davon, ob Ihr Dateisystem tatsächlich die Groß- und Kleinschreibung berücksichtigt.

Der einzige Weg, an den Sie denken können, um die Groß- / Kleinschreibung praktisch zu erzwingen, besteht darin, einen Filtertreiber zu schreiben, der das OBJ_CASE_INSENSITIVE-Flag aus den eingehenden Syscall-Anforderungen entfernt, wodurch NTFS, EXT2 oder das interne Dateisystem, das Sie standardmäßig verwenden, zugelassen wird Groß- und Kleinschreibung beachten.

1
surfasb

Von Windows aus ist dies möglich, aber Sie müssen C schreiben können.

NTFS speichert Namen als Groß- und Kleinschreibung (zur Unterstützung des POSIX-Subsystems). NTFS unterstützt jedoch nicht die Groß- und Kleinschreibung selbst. In Anbetracht der Tatsache, dass NT ursprünglich als direkter Konkurrent zu UNIX geschrieben wurde, ist dies keine Überraschung.

http://support.microsoft.com/kb/100108

http://blogs.msdn.com/b/sfu/

http://www.netbsd.org/docs/pkgsrc/platforms.html#interix

0
adib

Looks like the only way is to install a virtualized Linux and share the VM's drive out to Windows.

I've been looking around the Internet for the same solution, primarily to checkout a GIT repository from a Linux system that has files only differing in case (don't preach why they're there -- it's beyond my control). But looks like there isn't a relatively straightforward way to do this short of writing your own subsystem or deeply integrating to the Interix (now Unix services) subsystem.