Reflexión del Registro

[La información de este tema se aplica a Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP. A partir de Windows 7 y Windows Server 2008 R2, WOW64 ya no usa la reflexión del Registro y, anteriormente, las claves reflejadas se comparten en su lugar. Para obtener más información, consulte Claves del Registro afectadas por WOW64.

El redirector del registro aísla las aplicaciones de 32 y 64 bits proporcionando vistas lógicas independientes de determinadas partes del registro en WOW64. Sin embargo, los valores de algunas claves del Registro deben ser los mismos en las vistas de 32 y 64 bits.

El proceso de reflexión del Registro copia las claves del Registro y los valores entre dos vistas del Registro para mantenerlos sincronizados. Cada vista tiene una copia física independiente de cada clave del Registro reflejada, una para la vista del Registro de 32 bits y la otra para la vista del Registro de 64 bits.

Una clave reflejada se copia cuando se cierra una clave mediante una llamada a RegCloseKey. Tenga en cuenta que esto da lugar a una posible condición de carrera: si más de un proceso cambia la clave reflejada, la última llamada a RegCloseKey determina el valor final de la clave.

El reflector copia los datos de activación COM para los servidores locales entre las vistas, pero no copia los datos en proceso porque no se permite la combinación de datos en proceso de 32/64 en Windows de 64 bits.

La reflexión no está habilitada para las claves del Registro compartidas ni para las claves del Registro que no se redirigen. Por ejemplo, la reflexión no está habilitada para la clave deHKEY_LOCAL_MACHINE\System . Para obtener una lista de las claves del Registro que se redirigen, comparten o reflejan, consulte Claves del Registro afectadas por WOW64.

La reflexión del Registro usa una directiva "el último escritor gana", como se muestra en el ejemplo siguiente:

  • Después de una instalación limpia de Windows de 64 bits, Wordpad.exe de 64 bits se registra para controlar .doc archivos. El reflector copia el registro de .doc de la vista del Registro de 64 bits en la vista del Registro de 32 bits.
  • Un administrador instala Office de 32 bits, que registra Winword.exe de 32 bits para controlar .doc archivos en la vista del Registro de 32 bits. El reflector del Registro copia esta información en la vista del Registro de 64 bits, por lo que las aplicaciones de 32 y 64 bits inician la versión de 32 bits de Winword.exe para archivos .doc.
  • Un administrador instala Office de 64 bits, que registra Winword.exe de 64 bits para controlar .doc archivos en la vista del Registro de 64 bits. El reflector del Registro copia esta información en el registro de 32 bits, por lo que las aplicaciones de 32 y 64 bits inician la versión de 64 bits de Winword.exe para archivos de .doc.

Por lo tanto, la información de asociación de archivo se conserva para la aplicación instalada más recientemente.

Puede ser útil para que las aplicaciones de 32 y 64 bits compartan valores de clave del Registro específicos que normalmente se escriben en vistas del Registro independientes. Por ejemplo, un servidor OLE de 32 bits que puede atender solicitudes de clientes de 32 y 64 bits podría hacer que sus datos del Registro de 32 bits estén disponibles para la vista de 64 bits del registro del sistema.

Cuando un componente escribe datos en el registro del sistema, WOW64 analiza la información y realiza una copia de los datos en la vista alternativa del Registro cuando corresponda. Normalmente, este proceso mantiene dos copias físicas independientes de las mismas claves del Registro en ambas vistas del Registro y se denomina reflejo del registro o creación de reflejo del registro.

La mayoría de las claves de la raíz de clases se encuentran en esta categoría. Novedades a las claves se reflejan cuando se completa la actualización y se cierra el identificador de la clave. En casos específicos, las escrituras en una clave no se reflejan si la clave tiene alguna dependencia de bits. Por ejemplo, la clave InprocServer32 de 32 bits no es relevante para las aplicaciones de 64 bits, por lo que la clave InprocServer32 no se refleja en la vista del Registro de 64 bits. Sin embargo, las aplicaciones de 64 bits pueden usar la clave LocalServer32 de 32 bits y la clave LocalServer32 se refleja.

Para HKEY_LOCAL_MACHINE\Software\Classes\CLSID y HKEY_CURRENT_USER\Software\Classes\CLSID, solo se reflejan los CLSID que no especifican InprocServer32 o InprocHandler32. Solo los CLSID localServer32 se reflejan porque se ejecutan fuera de proceso y se pueden activar mediante aplicaciones de 32 o 64 bits. Los CLSID de InProcServer32 no se reflejan porque no es posible cargar un archivo DLL de 32 bits para su ejecución en un proceso de 64 bits o un archivo DLL de 64 bits para su ejecución en un proceso de 32 bits.

Para HKEY_LOCAL_MACHINE\Software\Classes\Appid y HKEY_CURRENT_USER\Software\Classes\Appid, los valores del Registro DllSurrogate y DllSurrogateExecutable no se reflejan si su valor es una cadena vacía.

Para deshabilitar y habilitar la reflexión del Registro para una clave reflejada determinada, use las funciones RegDisableReflectionKey y RegEnableReflectionKey . Estas funciones no afectan a las claves que no están en la lista de claves reflejadas anteriormente en este tema. Las aplicaciones solo deben deshabilitar la reflexión para las claves del Registro que crean y no intentan deshabilitar la reflexión para las claves predefinidas, como HKEY_LOCAL_MACHINE o HKEY_CURRENT_USER. Para determinar si las claves de la lista de reflexión se han deshabilitado, use la función RegQueryReflectionKey .

Las claves reflejadas no se deben usar en las operaciones del Registro de transacciones. Escribir en claves reflejadas durante una transacción puede provocar un error en la transacción. Para obtener más información sobre las transacciones, vea Administrador de transacciones de kernel.

Redirector del Registro

Reflexión del Registro en Windows

Claves del Registro afectadas por WOW64