WoW64 automatische Ordnerumleitung

Aus TCWikide
Zur Navigation springen Zur Suche springen

Sind C:\windows\system32 und C:\windows\SysWow64 dasselbe?

Nein.

Es gibt beide Ordner nur auf 64-bit Windows Versionen.

Unter Windows 64-bit leben ja echte 64-bit Programme und 32-bit Programme zusammen. 64-bit Programme brauchen echte 64-bit DLLs. 32-bit Programme brauchen echte 32-bit DLLs. Die 64-bit und die 32-bit DLLs heißen oft genau gleich, dürfen sich aber niemals in die Quere kommen. Man muß sie also sauber trennen und in verschiedenen Ordnerbäumen ablegen.

Der Ordner C:\Windows\System32 und seine Unterordner enthält bei 64-bit Windows Versionen ironischerweise die 64-bit DLLs, Treiber und Executables (ausführbare Dateien). Der Ordner C:\Windows\SysWow64 und seine Unterordner enthält bei 64-bit Windows Versionen die 32-bit DLLs, Treiber und Executables (ausführbare Dateien). Darum sind beide Ordnerbäume gleich aufgebaut und enthalten so viele gleichnamige Dateien. Allerdings sind es einmal die 64-bit Versionen und einmal die 32-bit Versionen. Die Dateigrößen werden i.d.R. auch nicht übereinstimmen.


Warum gibt es C:\windows\System32 und C:\windows\SysWow64?

Microsoft hatte folgende geniale Idee:

Wir benutzen für die 64-bit Teile vom 64-bit Windows den alten Ordnernamen C:\windows\system32 weiter und legen dort 64-bit DLLs, Treiber und Executables (ausführbare Dateien) ab. Für die 32-bit Programme erfinden wir als Ersatz C:\windows\SysWOW64 (Windows auf Windows 64) und legen dort 32-bit DLLs, Treiber und und Executables (ausführbare Dateien) ab.


Jetzt hatte Microsoft ein kleines Problem:

64-bit Programme suchen DLLs in C:\windows\system32. Aber auch 32-bit Programme suchen DLLs in C:\windows\System32. Dort liegen aber schon gleichnamige 64-bit DLLs, die die 32 bit Programme auf keinen Fall benutzen können.


Und nun kommt die automatische Ordnerumleitung ins Spiel:

Wenn ein 32-bit Programm DLLs, Treiber oder Executables aus C:\Windows\System32 anfragt, dann sucht 64-bit Windows diese Dateien stattdessen in C:\Windows\SysWow64. Es erzählt dem 32-bit Programm jedoch, es habe die Dateien aus C:\Windows\System32 geholt.

Wenn ein 32-bit Programm in den Ordner C:\Windows\System32 wechseln will, dann schickt das 64-bit Windows das 32-bit Programm stattdessen in den Ordner C:\Windows\SysWow64. Es erzählt dem 32-bit Programm jedoch, es stehe jetzt im Pfad C:\windows\system32. Und so wird das 32-bit Programm es auch anzeigen.


Im Klartext Wow64 belügt 32-bit Programme:

Das 64-bit Windows belügt 32-bit Programme über manche Ordnernamen. Genauer gesagt ist dafür das WoW64 Subsystem zuständig, das 32-bit Programme auf 64-bit Windows betreibt.
Deshalb wird ein 32-bit Programm in C:\windows\system32 und darunter die gleichen Dateien und Ordner finden wie in C:\Windows\sysWow64, weil es in Wirklichkeit immer nach C:\Windows\SysWow64 geschickt wird.


Das Hintertürchen SysNative:

Irgendwann ist auch Microsoft das Licht aufgegangen, dass es Gelegenheiten gibt, in denen 32-bit Programme den echten Ordner C:\windows\system32 und seine Dateien und Unterordner sehen und darauf zugreifen müssen. (Z.B. Datei Manager beim Kopieren, Verschieben, Ordnerinhalt einfach auflisten)

Da ist Microsoft auf die Idee verfallen: Wir stellen 32-bit Programmen einfach einen unsichtbaren Aliasnamen sysnative zur Verfügung. Wenn ein 32-bit Programm nun verlangt, Zugang zu bekommen auf C:\windows\system32, indem es dessen Aliasnamen sysnative benutzt, also C:\Windows\Sysnative, dann wird es nicht nach C:\Windows\SysWow64 umgeleitet und darüber belogen. Dann darf es in den echten Ordner C:\Windows\System32.


Verfehlter Ansatz:

Man hätte die verwirrende automatische Ordnerumleitung vermeiden können, wenn man bei der Erfindung des 64-bit Windows sich entschieden hätte, 64-bit DLLs, Treiber und ausführbare Dateien in C:\Windows\System64 und Unterordnern abzulegen.




Zurück zur Auf Windows 64-bit werden einige Dateien und Ordner vom Explorer aber nicht vom Total Commander angezeigt!