Registrierungsumleitung

Der Registrierungsumleitungsor isoliert 32-Bit- und 64-Bit-Anwendungen, indem er separate logische Ansichten bestimmter Teile der Registrierung auf WOW64 bereitstellt. Die Registrierungsumleitung fängt 32-Bit- und 64-Bit-Registrierungsaufrufe an die jeweiligen logischen Registrierungsansichten ab und ordnet sie dem entsprechenden physischen Registrierungsspeicherort zu. Der Umleitungsprozess ist für die Anwendung transparent. Daher kann eine 32-Bit-Anwendung auf Registrierungsdaten zugreifen, als ob sie unter 32-Bit-Windows ausgeführt werden, auch wenn die Daten an einem anderen Speicherort unter 64-Bit-Windows gespeichert werden.

Windows 10 auf ARM: Zusätzlich zur logischen 32-Bit-Ansicht für x86-Anwendungen enthält Windows 10 in ARM eine separate logische Ansicht für 32-Bit-ARM-Anwendungen.

Eine Teilmenge der Schlüssel unter umgeleiteten Registrierungspfaden wird freigegeben. 32-Bit-Registrierungsaufrufe für freigegebene Schlüssel werden nicht umgeleitet. Stattdessen wird jeder logischen Ansicht der Registrierung eine physische Kopie des Schlüssels zugeordnet. Eine Liste der umgeleiteten Schlüssel und freigegebenen Schlüssel finden Sie unter Registrierungsschlüssel, die von WOW64 betroffen sind.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Um die Anwendungsinteroperabilität über COM und andere Mechanismen zu ermöglichen, wird auch eine Teilmenge von umgeleiteten Registrierungsschlüsseln berücksichtigt. Der Prozess der Registrierungsreflektion kopiert Registrierungsschlüssel und -werte zwischen zwei Registrierungsansichten, um sie zu synchronisieren. Die Registrierungsreflektion wurde ab Windows 7 und Windows Server 2008 R2 entfernt. Weitere Informationen finden Sie unter Registrierungsreflektion.

Das folgende Szenario veranschaulicht die Verwendung dieser logischen Ansichten:

  • Eine 32-Bit-x86-Anwendung überprüft, ob der folgende Registrierungsschlüssel vorhanden ist: HKEY_LOCAL_MACHINE\Software\Hello. Wenn der Schlüssel nicht vorhanden ist, erstellt die Anwendung ihn mit dem Standardwert "Hello 32-Bit x86 world". Andernfalls wird der Wert gelesen und angezeigt.
  • Dieselbe Anwendung wird so geändert, dass "Hello 64-Bit world" anstelle von "Hello 32-Bit x86 world" geschrieben und als 64-Bit-x64- oder ARM64-Anwendung neu kompiliert wird.
  • Windows 10 in ARM: Dieselbe Anwendung wird geändert, um "Hello 32-Bit ARM world" zu schreiben und als 32-Bit-ARM-Anwendung neu kompiliert.
  • Wenn die 32-Bit-x86-Anwendung unter 64-Bit-Windows ausgeführt wird, wird "Hello 32-Bit x86 world" angezeigt. Wenn die 64-Bit-Anwendung ausgeführt wird, wird "Hello 64-Bit world" angezeigt. Windows 10 unter ARM: Wenn die 32-Bit-ARM-Anwendung unter 64-Bit-ARM64-Windows ausgeführt wird, wird "Hello 32-Bit ARM world" angezeigt. Alle Anwendungen rufen dieselben Registrierungsfunktionen mit demselben vordefinierten Handle und demselben Schlüsselnamen auf. Der Unterschied besteht darin, dass jede Anwendung mit ihrer logischen Ansicht der Registrierung arbeitet und jede Ansicht einem separaten physischen Speicherort der Registrierung zugeordnet wird, wodurch alle Versionen der Zeichenfolge intakt bleiben.

Umgeleitete Schlüssel werden physischen Speicherorten unter Wow6432Node zugeordnet. Beispielsweise wird HKEY_LOCAL_MACHINE\Software an HKEY_LOCAL_MACHINE\Software\Wow6432Nodeumgeleitet. Der physische Speicherort von umgeleiteten Schlüsseln sollte jedoch als vom System reserviert betrachtet werden. Anwendungen sollten nicht direkt auf den physischen Standort eines Schlüssels zugreifen, da sich dieser Speicherort ändern kann. Weitere Informationen finden Sie unter Zugreifen auf eine alternative Registrierungsansicht.

Windows 10 auf ARM: Umgeleitete 32-Bit-ARM-Schlüssel werden physischen Standorten unter WowAA32Node zugeordnet.

Um 32-Bit-Anwendungen zu unterstützen, die REG_SZ oder REG_EXPAND_SZ Daten mit %ProgramFiles% oder %commonprogramfiles% in die Registrierung schreiben, fängt WOW64 diese Schreibvorgänge ab und ersetzt sie durch "%ProgramFiles(x86)%" und "%commonprogramfiles(x86)%". Wenn sich beispielsweise das Verzeichnis Programme auf laufwerk C befindet, wird "%ProgramFiles(x86)%" zu "C:\Programme (x86)" erweitert. Die Ersetzung erfolgt nur, wenn die folgenden Bedingungen erfüllt sind:

  • Die Zeichenfolge muss mit %ProgramFiles% oder %commonprogramfiles% beginnen. Wenn die Zeichenfolge mit einem Leerzeichen oder einem anderen Zeichen als %beginnt, wird sie nicht ersetzt.
  • Die Groß-/Kleinschreibung von %ProgramFiles% oder %commonprogramfiles% muss genau wie gezeigt sein, da beim Zeichenfolgenvergleich die Groß-/Kleinschreibung beachtet wird. Wenn die Zeichenfolge beispielsweise mit %CommonProgramFiles% anstelle von %commonprogramfiles% beginnt, wird sie nicht ersetzt.
  • Die Zeichenfolge darf MAX_PATH*2+15 Zeichen nicht überschreiten. Wenn sie diese Länge überschreitet, wird sie nicht ersetzt.
  • Der Schlüssel kann nicht mit KEY_WOW64_64KEY geöffnet werden. Dieses Flag gibt an, dass Vorgänge für den Schlüssel in der 64-Bit-Registrierungsansicht ausgeführt werden sollen, damit er nicht ersetzt wird. Weitere Informationen finden Sie unter Zugreifen auf eine alternative Registrierungsansicht.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Das KEY_WOW_64_64KEY-Flag wirkt sich nicht darauf aus, ob ein Schlüssel ersetzt wird. Dieses Flag wirkt sich ab Windows 7 und Windows Server 2008 R2 auf den Ersatz aus.

Darüber hinaus werden REG_SZ oder REG_EXPAND_SZ Schlüssel, die system32 enthalten, durch syswow64 ersetzt. Die Zeichenfolge muss mit dem Pfad beginnen, der auf oder unter %windir%\system32 verweist. Beim Zeichenfolgenvergleich wird die Groß-/Kleinschreibung nicht beachtet. Umgebungsvariablen werden vor dem Abgleich mit dem Pfad erweitert, sodass alle folgenden Pfade ersetzt werden: %windir%\system32, %SystemRoot%\system32 und C:\windows\system32. Dieser Patch wird nur auf die Schlüssel angewendet, die vor Windows 7 übernommen wurden.

Weitere Informationen finden Sie in den folgenden Themen: