WoW64 automatische Ordnerumleitung: Unterschied zwischen den Versionen

Aus TCWikide
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 54: Zeile 54:


<br><br>
<br><br>
--27. Feb. 2010 16:40 (UTC)
--27. Feb. 2010 16:47 (UTC)


<BR>
<BR>
----<BR>Zurück zur [[Einige Dateien und Ordner werden vom Windows Explorer aber nicht vom Total Commander angezeigt!]]<BR>
----<BR>Zurück zur [[Einige Dateien und Ordner werden vom Windows Explorer aber nicht vom Total Commander angezeigt!]]<BR>

Version vom 27. Februar 2010, 16:46 Uhr

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

Nein.

Es gibt beide Ordner nur auf 64bit Windows Versionen.

Unter Windows 64bit leben ja echte 64bit Programme und 32bit Programme zusammen. 64bit Programme brauchen echte 64bit DLLs. 32bit Programme brauchen echte 32bit DLLs. Die 64bit und die 32bit 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 64bit Windows Versionen ironischerweise die 64bit DLLs, Treiber und Executables (ausführbare Dateien). Der Ordner C:\Windows\SysWow64 und seine Unterordner enthält bei 64bit Windows Versionen die 32bit 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 64bit Versionen und einmal die 32bit 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 64bit Teile vom 64bit Windows den alten Ordnernamen C:\windows\system32 weiter und legen dort 64bit DLLs, Treiber und Executables (ausführbare Dateien) ab. Für die 32bit Programme erfinden wir als Ersatz C:\windows\SysWOW64 (Windows auf Windows 64) und legen dort 32bit DLLs, Treiber und und Executables (ausführbare Dateien) ab.

Jetzt hatte Microsoft ein kleines Problem:

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

Und nun kommt die automatische Ordnerumleitung ins Spiel:

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

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

Im Klartext Wow64 belügt 32bit Programme:

Das 64bit Windows belügt 32bit Programme über manche Ordnernamen. Genauer gesagt ist dafür das WoW64 Subsystem zuständig, das 32bit Programme auf 64bit Windows betreibt.
Deshalb wird ein 32bit 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 32bit 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 32bit Programmen einfach einen unsichtbaren Aliasnamen sysnative zur Verfügung. Wenn ein 32bit 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 64bit Windows sich entschieden hätte, 64bit DLLs, Treiber und ausführbare Dateien in C:\Windows\System64 und Unterordnern abzulegen.



--27. Feb. 2010 16:47 (UTC)




Zurück zur Einige Dateien und Ordner werden vom Windows Explorer aber nicht vom Total Commander angezeigt!