Freigeben über


Registrierungsumleitung

Der Registrierungsumleitungs-Umleitung isoliert 32-Bit- und 64-Bit-Anwendungen, indem separate logische Ansichten bestimmter Teile der Registrierung auf WOW64 bereitgestellt werden. Der Registrierungsumleitungs-Umleitung 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 wurde, auch wenn die Daten an einem anderen Speicherort unter 64-Bit-Windows gespeichert sind.

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

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

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Um die Anwendungsinteroperabilität über COM und andere Mechanismen zu ermöglichen, werden auch eine Teilmenge der umgeleiteten Registrierungsschlüssel widergespiegelt. Der Prozess der Registrierungsreflektion kopiert Registrierungsschlüssel und Werte zwischen zwei Registrierungsansichten, um sie synchron zu halten. Die Registrierungsreflektion wurde ab Windows 7 und Windows Server 2008 R2 entfernt. Weitere Informationen finden Sie unter Registry Reflection.

Das folgende Szenario veranschaulicht die Verwendung dieser logischen Ansichten:

  • Eine 32-Bit-x86-Anwendung sucht nach dem Vorhandensein des folgenden Registrierungsschlüssels: 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.
  • Die gleiche Anwendung wird geändert, um "Hello 64-Bit World" anstelle von "Hello 32-Bit x86 world" zu schreiben und als 64-Bit-x64- oder ARM64-Anwendung neu kompiliert.
  • Windows 10 auf 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 auf ARM: Wenn die 32-Bit-ARM-Anwendung auf 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 der 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 Standorten unter Wow6432Node-zugeordnet. Beispielsweise wird HKEY_LOCAL_MACHINE\Software an HKEY_LOCAL_MACHINE\Software\Wow6432Nodeumgeleitet. Der physische Speicherort der umgeleiteten Schlüssel sollte jedoch vom System reserviert 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-Tasten werden physischen Standorten unter WowAA32Node zugeordnet.

Um 32-Bit-Anwendungen zu unterstützen, die REG_SZ oder REG_EXPAND_SZ Daten schreiben, die %ProgramFiles% oder %commonprogramfiles% in die Registrierung enthalten, fängt WOW64 diese Schreibvorgänge ab und ersetzt sie durch "%ProgramFiles(x86)%" und "%commonprogramfiles(x86)%". Wenn sich beispielsweise das Verzeichnis "Programme" auf dem Laufwerk "C" befindet, wird "%ProgramFiles(x86)%" auf "C:\Programme (x86)" erweitert. Der Ersatz tritt nur auf, 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 dargestellt sein, da bei dem 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 Kennzeichen gibt an, dass Vorgänge für den Schlüssel in der 64-Bit-Registrierungsansicht ausgeführt werden sollen, sodass sie nicht ersetzt werden. Weitere Informationen finden Sie unter Zugreifen auf eine alternative Registrierungsansicht.

Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Das flag KEY_WOW_64_64KEY wirkt sich nicht darauf aus, ob ein Schlüssel ersetzt wird. Dieses Kennzeichen wirkt sich auf den Ersatz ab Windows 7 und Windows Server 2008 R2 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 zeigt. Bei dem Zeichenfolgenvergleich wird die Groß-/Kleinschreibung nicht beachtet. Umgebungsvariablen werden vor dem Abgleichen des Pfads 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: