WoW64 automatische Ordnerumleitung: Unterschied zwischen den Versionen

Aus TCWikide
Zur Navigation springen Zur Suche springen
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.
<br><br>
 


== 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.
<br><br>
 


=== 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.
<br><br>
 


=== 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.
<br><br>
 


=== 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.  
<br><br>
 


=== 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.  
<br><br>
 


== Verfehlter Ansatz: ==
== Verfehlter Ansatz: ==
Zeile 54: Zeile 54:




<BR>
----<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.




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