WOW64

aus WB Wiki; freien Wissensdatenbank rund ums Thema Computer
Version vom 10. Januar 2008, 15:03 Uhr von Andy (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Einleitung

WOW steht für „Windows on Windows“ und ist ganz grob dafür gedacht, ältere Anwendungen auf aktuellen Windows Systemen ohne Modifikationen auszuführen. Die erste Version war so z.B. dafür gedacht, alte 16-Bit Anwendungen unter Windows NT (einem 32-Bit Betriebssystem) auszuführen.

Mit Einführung von 64-Bit Betriebssystemen wie Windows XP x64 oder VISTA 64 war ein völlig neues Subsystem notwendig. Mit Hilfe dem sogenannte „Microsoft Windows-32-on-Windows-64" (WOW64) ist es also möglich, 32-Bit-Programme ohne Modifikationen auf einem 64-Bit System auszuführen. 16-Bit Anwendungen bleiben damit allerding außen vor und können nicht mehr verwendet werden.

Was aber steckt genau hinter WOW oder genauer hinter WOW64 ?

Das Betriebssystem muss Anfragen einer 32-Bit Anwendung und einer 64-Bit Anwendung an das Dateisystem und die Registry klar trennen. Grund ist die Tatsache, dass z.B. bestimmte DLL`s oder Registry-Einstellungen unter dem gleichen Namen für beide Welten bereitgestellt werden müssen und untereinander nicht kompatibel sind. Es muss daher konsequent verhindert werden, dass ein 64-Bit Prozess auf 32-Bit Systemdateien und Einstellung zugreift. Anders herum darf ein 32-Bit Prozess natürlich auch nicht auf 64-Bit Bereich zugreifen. Es geht konkret im Filesystem um den Bereich unter SYSTEM32 und in der Registry vornehmlich um einige Bereich unter HKEY_LOCAL_MASCHINE\SOFTWARE.

So werden Anfragen an das System32-Verzeichnis von einem 32-Bit Prozess von WOW64 an das Verzeichnis %systemroot%\SysWOW64 weitergeleitet. Anfragen eines 64-Bit Prozesses ganz normal an %systemroot%\System32. Auch wenn es der Name anders vermuten lässt, befinden sich also unter SYSTEM32 nur 64-Bit Programme. Anfragen eines 32-Bit Prozesses an HKEY_LOCAL_MASCHINE\SOFTWARE werden umgeleitet nach HKEY_LOCAL_MASCHINE\SOFTWARE\Wow6432Node. Greift eine 32-Bit Anwendung nun also auf %systemroot%\System32\crypt32.dll zu, wird diese Anfrage vom Betriebssystem nach %systemroot%\ SysWOW64\crypt32.dll umgeleitet.

Da in den Unterverzeichnissen SPOOL, CATROOT, CATROOT1 und DRIVERS\ETC Informationen wie Zertifikate oder Einstellungen gespeichert sind, die von beiden Systemen benötigt werden, gilt für diese Verzeichnisse die Umleitung nicht.

Ähnlich wie bei SYSTEM32 sieht es auch bei dem Verzeichnis %ProgramFiles% aus. Alle Anfragen von 32-Bit Anwendungen an %ProgramFiles% werden von WOW64 nach %ProgramFiles(x86)% umgeleitet. Wer dies einmal testen möchte, kann unter C:\Windows\SysWOW64 die CMD.EXE starten und dort den Befehl „CD %ProgramFiles%“ eingeben. Anschließend unter C:\Windows\System32 ebenfalls die CMD.EXE starten und den gleichen Befehl eingeben. Nun das Ergebnis vergleichen. In der 32-Bit Eingabeaufforderung landen wir unter C:\Programm Files (x86) und in der 64-Bit Eingabeaufforderung unter C:\Programm Files.

Wer diese Technik verinnerlicht hat, versteht auch sehr schnell, warum sehr systemnahe Anwendungen trotz der WOW64-Technik unter VISTA nicht funktionieren. Betroffen sind hiervon unter anderem Defragmentierungs- und Antivirusprogramme. Sie greifen nämlich direkt auf den System-Kernel zu können deshalb von WOW nicht profitieren. Auch ist zu verstehen, warum 32-Bit Shell-Extensions unter VISTA nicht mehr funktionieren können. Der 64-Bit Explorer darf keine 32-Bit DLL`s laden. Ein konkretes Beispiel wären z.B. Kontextmenüeinträge von WinRAR im Datei-Explorer. Eine alte, nicht 64-Bit kompatible WinRAR Version kann diese Kontextmenüeinträge unter VISTA nicht anlegen.