WoW64 automatische Ordnerumleitung: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „== Sind C:\windows\'''system32''' und C:\windows\'''SysWow64''' dasselbe? == Nein. Es gibt beide Ordner nur auf 64bit Windows Versionen. Unter Windows 64bit le…“) |
K (sinnfreie <BR> am Ende jedes Abschnittes entfernt) |
||
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
Nein. | Nein. | ||
Es gibt beide Ordner nur auf | Es gibt beide Ordner nur auf 64-bit Windows Versionen. | ||
Unter Windows | 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 | 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 | 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 | 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 | 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\ | |||
== Warum gibt es C:\windows\'''System32''' und C:\windows\'''SysWow64'''? == | |||
=== Microsoft hatte folgende ''geniale'' Idee: === | === Microsoft hatte folgende ''geniale'' Idee: === | ||
Wir benutzen für die | 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 | 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. | |||
=== Und nun kommt die '''automatische Ordnerumleitung''' ins Spiel: === | === Und nun kommt die '''automatische Ordnerumleitung''' ins Spiel: === | ||
Wenn ein ''' | 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 | 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 | === 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. <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. | |||
=== Das Hintertürchen '''SysNative''': === | === Das Hintertürchen '''SysNative''': === | ||
Irgendwann ist auch Microsoft das Licht aufgegangen, dass es Gelegenheiten gibt, in denen | 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 | 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: == | ||
Man hätte die verwirrende automatische Ordnerumleitung vermeiden können, wenn man bei der Erfindung des | 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. | ||
< | ----<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]] |
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.