Partager via


Réflexion du Registre

[Les informations de cette rubrique s’appliquent à Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP. À compter de Windows 7 et Windows Server 2008 R2, WOW64 n’utilise plus la réflexion du Registre et les clés précédemment reflétées sont partagées à la place. Pour plus d’informations, consultez clés de Registre affectées par WOW64.]

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. Toutefois, les valeurs de certaines clés de Registre doivent être identiques dans les vues 32 bits et 64 bits.

Le processus de réflexion du Registre copie les clés de Registre et les valeurs entre deux vues de Registre pour les synchroniser. Chaque vue a une copie physique distincte de chaque clé de Registre reflétée, une pour la vue de Registre 32 bits et l’autre pour la vue de Registre 64 bits.

Une clé reflétée est copiée lorsqu’une clé est fermée en appelant RegCloseKey. Notez que cela donne lieu à une condition de concurrence possible : si plusieurs processus modifient la clé reflétée, la dernière RegCloseKey appel détermine la valeur finale de la clé.

Le réflecteur copie les données d’activation COM pour les serveurs locaux entre les vues, mais il ne copie pas les données in-process, car le mélange de données in-process 32/64 n’est pas autorisé sur Windows 64 bits.

La réflexion n’est pas activée pour les clés de Registre partagées ou pour les clés de Registre qui ne sont pas redirigées. Par exemple, la réflexion n’est pas activée pour la clé HKEY_LOCAL_MACHINE\System. Pour obtenir la liste des clés de Registre redirigées, partagées ou reflétées, consultez Clés de Registre affectées par WOW64.

La réflexion du Registre utilise une stratégie « last writer wins » comme illustré dans l’exemple suivant :

  • Après une nouvelle installation de Windows 64 bits, Wordpad.exe 64 bits est inscrite pour gérer les fichiers .doc. Le réflecteur copie l’inscription .doc à partir de la vue de Registre 64 bits dans la vue de Registre 32 bits.
  • Un administrateur installe Office 32 bits, qui inscrit des Winword.exe 32 bits pour gérer les fichiers .doc dans la vue de Registre 32 bits. Le réflecteur de Registre copie ces informations dans la vue de Registre 64 bits, de sorte que les applications 32 bits et 64 bits lancent la version 32 bits de Winword.exe pour les fichiers .doc.
  • Un administrateur installe Office 64 bits, qui inscrit des Winword.exe 64 bits pour gérer les fichiers .doc dans la vue de Registre 64 bits. Le réflecteur de Registre copie ces informations dans le registre 32 bits, de sorte que les applications 32 bits et 64 bits lancent la version 64 bits de Winword.exe pour les fichiers .doc.

Par conséquent, les informations d’association de fichiers sont conservées pour l’application la plus récente installée.

Il peut être utile pour les applications 32 bits et 64 bits de partager des valeurs de clés de Registre spécifiques qui sont normalement écrites dans des vues de Registre distinctes. Par exemple, un serveur OLE 32 bits qui peut traiter les requêtes des clients 32 bits et 64 bits peut rendre ses données de Registre 32 bits disponibles pour la vue 64 bits du registre système.

Lorsqu’un composant écrit des données dans le Registre système, WOW64 analyse les informations et effectue une copie des données dans l’autre affichage du Registre le cas échéant. En règle générale, ce processus conserve deux copies physiques distinctes des mêmes clés de Registre dans les deux vues du Registre et est appelée réflexion du Registre ou mise en miroir du Registre.

La plupart des clés sous la racine des classes se trouvent dans cette catégorie. Les mises à jour des clés sont reflétées lorsque la mise à jour se termine et que le handle à la clé se ferme. Dans des cas spécifiques, les écritures dans une clé ne sont pas reflétées si la clé a une dépendance de bitness. Par exemple, la clé InprocServer32 32 bits n’est pas pertinente pour les applications 64 bits. Par conséquent, la clé InprocServer32 n’est pas reflétée dans la vue de Registre 64 bits. Toutefois, les applications 64 bits peuvent utiliser la clé 32 bits LocalServer32 et la clé LocalServer32 est reflétée.

Pour HKEY_LOCAL_MACHINE\Software\Classes\CLSID et HKEY_CURRENT_USER\Software\Classes\CLSID, seuls les CLSID qui ne spécifient pas InprocServer32 ou InprocHandler32 sont reflétés. Seuls les CLSID LocalServer32 sont reflétés, car ils s’exécutent hors processus et peuvent être activés par des applications 32 ou 64 bits. Les CLSID InProcServer32 ne sont pas reflétés, car il n’est pas possible de charger une DLL 32 bits pour l’exécution dans un processus 64 bits ou une DLL 64 bits pour l’exécution dans un processus 32 bits.

Pour HKEY_LOCAL_MACHINE\Software\Classes\Appid et HKEY_CURRENT_USER\Software\Classes\Appid, les valeurs de Registre DllSurrogate et DllSurrogateExecutable ne sont pas reflétées si leur valeur est une chaîne vide.

Pour désactiver et activer la réflexion de Registre pour une clé reflétée particulière, utilisez les fonctions RegDisableReflectionKey et RegEnableReflectionKey. Ces fonctions n’affectent pas les clés qui ne figurent pas dans la liste des clés reflétées plus haut dans cette rubrique. Les applications doivent désactiver la réflexion uniquement pour les clés de Registre qu’elles créent et ne tentent pas de désactiver la réflexion pour les clés prédéfinies telles que HKEY_LOCAL_MACHINE ou HKEY_CURRENT_USER. Pour déterminer si les clés de la liste de réflexion ont été désactivées, utilisez la fonction RegQueryReflectionKey.

Les clés répercutées ne doivent pas être utilisées dans les opérations de Registre traitées. L’écriture sur des clés reflétées pendant une transaction peut entraîner l’échec de la transaction. Pour plus d’informations sur les transactions, consultez kernel Transaction Manager .

redirecteur de Registre

réflexion du Registre dans Windows

clés de Registre affectées par WOW64