Dateisystemumleitung
Das %windir%\System32-Verzeichnis ist für 64-Bit-Anwendungen unter 64-Bit-Windows reserviert. Die meisten DLL-Dateinamen wurden beim Erstellen von 64-Bit-Versionen der DLLs nicht geändert, sodass 32-Bit-Versionen der DLLs in einem anderen Verzeichnis gespeichert werden. WOW64 blendet diesen Unterschied mithilfe eines Dateisystemumleitungs-aus.
In den meisten Fällen wird der Zugriff, wenn eine 32-Bit-Anwendung versucht, auf %windir%\System32, %windir%\lastgood\system32, or %windir%\regedit.exezuzugreifen, an einen architekturspezifischen Pfad umgeleitet.
Anmerkung
Diese Pfade werden nur zur Referenz bereitgestellt. Aus Gründen der Kompatibilität sollten Anwendungen diese Pfade nicht direkt verwenden. Stattdessen sollten sie die unten beschriebenen APIs aufrufen.
Ursprünglicher Pfad | Umgeleiteter Pfad für 32-Bit-x86-Prozesse | Umgeleiteter Pfad für 32-Bit-ARM-Prozesse |
---|---|---|
%windir%\System32 | %windir%\SysWOW64 | %windir%\SysArm32 |
%windir%\lastgood\system32 | %windir%\lastgood\SysWOW64 | %windir%\lastgood\SysArm32 |
%windir%\regedit.exe | %windir%\SysWOW64\regedit.exe | %windir%\ SysArm32\regedit.exe |
Wenn der Zugriff bewirkt, dass das System die UAC-Eingabeaufforderung anzeigt, tritt keine Umleitung auf. Stattdessen wird die 64-Bit-Version der angeforderten Datei gestartet. Um dieses Problem zu verhindern, geben Sie entweder das SysWOW64-Verzeichnis an, um eine Umleitung zu vermeiden und den Zugriff auf die 32-Bit-Version der Datei sicherzustellen, oder führen Sie die 32-Bit-Anwendung mit Administratorrechten aus, damit die UAC-Eingabeaufforderung nicht angezeigt wird.
Windows Server 2003 und Windows XP: UAC wird nicht unterstützt.
Bestimmte Unterverzeichnisse sind von der Umleitung ausgenommen. Der Zugriff auf diese Unterverzeichnisse wird nicht an %windir%\SysWOW64 umgeleitet:
- %windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: %windir%\system32\driverstore wird umgeleitet.
Um den Namen des 32-Bit-Systemverzeichnisses abzurufen, sollten 64-Bit-Anwendungen die GetSystemWow64Directory2--Funktion (Windows 10, Version 1511) oder die GetSystemWow64Directory-Funktion verwenden.
Anwendungen sollten die SHGetKnownFolderPath--Funktion verwenden, um den %ProgramFiles% Verzeichnisnamen zu bestimmen.
Windows Server 2003 und Windows XP: Anwendungen sollten die SHGetSpecialFolderPath--Funktion verwenden, um den %ProgramFiles% Verzeichnisnamen zu bestimmen.
Anwendungen können die WOW64 Dateisystemumleitung mithilfe der Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirectionund Wow64RevertWow64FsRedirection Funktionen steuern. Das Deaktivieren der Dateisystemumleitung wirkt sich auf alle Dateivorgänge aus, die vom aufrufenden Thread ausgeführt werden. Daher sollte sie nur deaktiviert werden, wenn eine einzelne CreateFile Aufruf erforderlich ist und nach dem Zurückgeben der Funktion erneut aktiviert wird. Durch das Deaktivieren der Dateisystemumleitung für längere Zeiträume kann verhindert werden, dass 32-Bit-Anwendungen System-DLLs laden, was dazu führt, dass die Anwendungen fehlschlagen.
32-Bit-Anwendungen können auf das systemeigene Systemverzeichnis zugreifen, indem sie %windir%\Sysnative für %windir%\System32 ersetzen. WOW64 erkennt Sysnative als spezieller Alias, der verwendet wird, um anzugeben, dass das Dateisystem den Zugriff nicht umleiten sollte. Dieser Mechanismus ist flexibel und einfach zu verwenden, daher ist es der empfohlene Mechanismus, die Dateisystemumleitung zu umgehen. Beachten Sie, dass 64-Bit-Anwendungen den Sysnative-Alias nicht verwenden können, da es sich um ein virtuelles Verzeichnis handelt, das kein echtes Verzeichnis ist.
Windows Server 2003 und Windows XP: Der Sysnative-Alias wurde ab Windows Vista hinzugefügt.