WoW64 automatische Ordnerumleitung: Unterschied zwischen den Versionen
K (sinnfreie <BR> am Ende jedes Abschnittes entfernt) |
|||
Zeile 12: | Zeile 12: | ||
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).''' | 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. | 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'''? == | == Warum gibt es C:\windows\'''System32''' und C:\windows\'''SysWow64'''? == | ||
Zeile 20: | Zeile 20: | ||
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. | 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. | 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''': === | === 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. | 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: === | === Und nun kommt die '''automatische Ordnerumleitung''' ins Spiel: === | ||
Zeile 34: | Zeile 34: | ||
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'''. | 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. | 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: === | === Im Klartext Wow64 belügt 32-bit Programme: === | ||
Zeile 40: | Zeile 40: | ||
'''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. <br> | '''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. <br> | ||
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. | 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''': === | === Das Hintertürchen '''SysNative''': === | ||
Zeile 47: | Zeile 47: | ||
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. | 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: == | == Verfehlter Ansatz: == | ||
Zeile 54: | Zeile 54: | ||
----<BR>Zurück zur [[Auf Windows 64-bit werden einige Dateien und Ordner vom Explorer aber nicht vom Total Commander angezeigt!]]<BR> | ----<BR>Zurück zur [[Auf Windows 64-bit werden einige Dateien und Ordner vom Explorer aber nicht vom Total Commander angezeigt!]]<BR> | ||
<BR>[[Kategorie:FAQ]] | <BR>[[Kategorie:FAQ]] |
Aktuelle Version vom 10. März 2010, 22:58 Uhr
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.