Partager via


Réflexion du registre

[Les informations contenues dans 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 les mêmes dans les vues 32 bits et 64 bits.

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. Chaque vue a une copie physique distincte de chaque clé de Registre reflétée, l’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, le dernier appel RegCloseKey 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 qui sont 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 installation propre de Windows 64 bits, Wordpad.exe 64 bits est inscrit pour gérer les fichiers .doc. Le réflecteur copie l’inscription .doc de la vue du Registre 64 bits dans la vue du Registre 32 bits.
  • Un administrateur installe Office 32 bits, qui inscrit des Winword.exe 32 bits pour gérer .doc fichiers dans la vue du Registre 32 bits. Le réflecteur de Registre copie ces informations dans l’affichage de Registre 64 bits, de sorte que les applications 32 bits et 64 bits lancent la version 32 bits de Winword.exe pour .doc fichiers.
  • Un administrateur installe Office 64 bits, qui inscrit des Winword.exe 64 bits pour gérer .doc fichiers dans la vue du Registre 64 bits. Le réflecteur de Registre copie ces informations dans le Registre 32 bits. Les applications 32 bits et 64 bits lancent la version 64 bits de Winword.exe pour .doc fichiers.

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é 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 dans 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 vue 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é 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. Mises à jour aux clés sont répercutées lorsque la mise à jour est terminée et que le handle de la clé se ferme. Dans des cas spécifiques, les écritures dans une clé ne sont pas répercutées si la clé a une dépendance de bits. Par exemple, la clé InprocServer32 32 bits n’étant pas pertinente pour les applications 64 bits, la clé InprocServer32 n’est pas répercutée dans la vue du Registre 64 bits. Toutefois, les applications 64 bits peuvent utiliser la clé LocalServer32 32 bits 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 répercutés. Seuls les CLSID LocalServer32 sont reflétés, car ils sont 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 du Registre pour une clé réfléchie 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 pas tenter 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 reflété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 du Registre

Réflexion du Registre dans Windows

Clés de Registre affectées par WOW64