Redirecteur du Registre

Le redirecteur de Registre isole les applications 32 bits et 64 bits en fournissant des vues logiques distinctes de certaines parties du Registre sur WOW64. Le redirecteur du Registre intercepte les appels de registre 32 bits et 64 bits à leurs vues de Registre logique respectives et les mappe à l’emplacement de registre physique correspondant. Le processus de redirection est transparent pour l’application. Par conséquent, une application 32 bits peut accéder aux données du Registre comme si elles s’exécutaient sur Windows 32 bits, même si les données étaient stockées dans un autre emplacement sur windows 64 bits.

Windows 10 sur ARM : en plus de la vue logique 32 bits pour les applications x86, Windows 10 sur ARM inclut une vue logique distincte pour les applications ARM 32 bits.

Un sous-ensemble de clés sous les chemins de Registre redirigés est partagé. Les appels de Registre 32 bits aux clés partagées ne sont pas redirigés. Au lieu de cela, une copie physique de la clé est mappée dans chaque vue logique du Registre. Pour obtenir la liste des clés redirigées et des clés partagées, consultez Clés de Registre affectées par WOW64.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Pour activer l’interopérabilité des applications via COM et d’autres mécanismes, un sous-ensemble de clés de Registre redirigées est également reflété. Le processus de réflexion du Registre copie les clés et les valeurs de Registre entre deux vues de Registre pour les maintenir synchronisées. La réflexion du Registre a été supprimée à partir de Windows 7 et Windows Server 2008 R2. Pour plus d’informations, consultez Réflexion du Registre.

Le scénario suivant illustre l’utilisation de ces vues logiques :

  • Une application x86 32 bits vérifie l’existence de la clé de Registre suivante : HKEY_LOCAL_MACHINE\Software\Hello. Si la clé n’existe pas, l’application la crée avec la valeur par défaut « Hello 32 bits x86 world » ; sinon, il lit et affiche la valeur.
  • La même application est modifiée pour écrire « Hello 64 bits world » au lieu de « Hello 32 bits x86 world » et recompilée en tant qu’application x64 ou ARM64 64 bits.
  • Windows 10 sur ARM : la même application est modifiée pour écrire « Hello 32 bits ARM world » et recompilée en tant qu’application ARM 32 bits.
  • Lorsque l’application x86 32 bits est exécutée sur Windows 64 bits, elle affiche « Hello 32 bits x86 world ». Lorsque l’application 64 bits est exécutée, elle affiche « Hello 64 bits world ». Windows 10 sur ARM : lorsque l’application ARM 32 bits est exécutée sur des windows ARM64 64 bits, elle affiche « Hello 32 bits ARM World ». Toutes les applications appellent les mêmes fonctions de Registre avec le même handle prédéfini et le même nom de clé ; La différence réside dans le fait que chaque application fonctionne sur sa vue logique du Registre, et que chaque vue est mappée à un emplacement physique distinct du registre, qui conserve toutes les versions de la chaîne intactes.

Les clés redirigées sont mappées à des emplacements physiques sous Wow6432Node. Par exemple, HKEY_LOCAL_MACHINE\Software est redirigé vers HKEY_LOCAL_MACHINE\Software\Wow6432Node. Toutefois, l’emplacement physique des clés redirigées doit être considéré comme réservé par le système. Les applications ne doivent pas accéder directement à l’emplacement physique d’une clé, car cet emplacement peut changer. Pour plus d’informations, consultez Accès à un autre affichage du Registre.

Windows 10 sur ARM : les clés ARM 32 bits redirigées sont mappées à des emplacements physiques sous WowAA32Node.

Pour aider les applications 32 bits qui écrivent REG_SZ ou REG_EXPAND_SZ des données contenant %ProgramFiles% ou %commonprogramfiles% dans le Registre, WOW64 intercepte ces opérations d’écriture et les remplace par « %ProgramFiles(x86)% » et « %commonprogramfiles(x86)% ». Par exemple, si le répertoire Program Files se trouve sur le lecteur C, « %ProgramFiles(x86)% » est étendu à « C:\Program Files (x86) ». Le remplacement se produit uniquement si les conditions suivantes sont remplies :

  • La chaîne doit commencer par %ProgramFiles% ou %commonprogramfiles%. Si la chaîne commence par un espace ou un caractère autre que %, elle n’est pas remplacée.
  • Le cas de %ProgramFiles% ou %commonprogramfiles% doit être exactement comme indiqué, car la comparaison de chaînes respecte la casse. Par exemple, si la chaîne commence par %CommonProgramFiles% au lieu de %commonprogramfiles%, elle n’est pas remplacée.
  • La chaîne ne peut pas dépasser MAX_PATH*2+15 caractères. S’il dépasse cette longueur, il n’est pas remplacé.
  • La clé ne peut pas être ouverte avec KEY_WOW64_64KEY. Cet indicateur spécifie que les opérations sur la clé doivent être effectuées dans la vue de Registre 64 bits, de sorte qu’elle n’est pas remplacée. Pour plus d’informations, consultez Accès à un autre affichage du Registre.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : L’indicateur KEY_WOW_64_64KEY n’affecte pas si une clé est remplacée. Cet indicateur affecte le remplacement à partir de Windows 7 et Windows Server 2008 R2.

En outre, les clés REG_SZ ou REG_EXPAND_SZ contenant system32 sont remplacées par syswow64. La chaîne doit commencer par le chemin pointant vers ou sous %windir%\system32. La comparaison de chaînes ne respecte pas la casse. Les variables d’environnement étant développées avant de correspondre au chemin d’accès, tous les chemins suivants sont remplacés : %windir%\system32, %SystemRoot%\system32 et C:\windows\system32. Ce correctif est appliqué uniquement aux clés qui ont été reflétées avant Windows 7.

Pour plus d'informations, voir les rubriques suivantes :