Compartir a través de


Virtualización del registro

virtualización del Registro es una tecnología de compatibilidad de aplicaciones que permite que las operaciones de escritura del Registro que tengan un impacto global se redirijan a ubicaciones por usuario. Este redireccionamiento es transparente para las aplicaciones que leen o escriben en el registro. Se admite a partir de Windows Vista.

Esta forma de virtualización es una tecnología provisional de compatibilidad de aplicaciones; Microsoft pretende quitarlo de versiones futuras del sistema operativo Windows a medida que más aplicaciones son compatibles con Windows Vista y versiones posteriores de Windows. Por lo tanto, es importante que la aplicación no dependa del comportamiento de la virtualización del registro en el sistema.

La virtualización solo está pensada para proporcionar compatibilidad con las aplicaciones existentes. Las aplicaciones diseñadas para Windows Vista y versiones posteriores de Windows no deben escribir en áreas del sistema confidenciales, ni deben depender de la virtualización para solucionar ningún problema. Al actualizar el código existente para que se ejecute en Windows Vista y versiones posteriores de Windows, los desarrolladores deben asegurarse de que las aplicaciones solo almacenen datos en ubicaciones por usuario o en ubicaciones de equipos dentro de %alluserprofile% que usen correctamente una lista de control de acceso (ACL).

Para obtener más información sobre cómo compilar aplicaciones compatibles con UAC, consulte la guía para desarrolladores de UAC de .

Introducción a la virtualización

Antes de Windows Vista, los administradores suelen ejecutar las aplicaciones. Como resultado, las aplicaciones podrían acceder libremente a los archivos del sistema y las claves del Registro. Si un usuario estándar ejecutara estas aplicaciones, se produciría un error debido a derechos de acceso insuficientes. Windows Vista y versiones posteriores de Windows mejoran la compatibilidad de aplicaciones para estas aplicaciones mediante la redirección automática de estas operaciones. Por ejemplo, las operaciones del Registro en el almacén global (HKEY_LOCAL_MACHINE\Software) se redirigen a una ubicación por usuario dentro del perfil del usuario conocido como el almacén virtual de (HKEY_USERS\<SID de usuario>_Classes\VirtualStore\Machine\Software).

La virtualización del Registro se puede clasificar ampliamente en los siguientes tipos:

virtualización de Open Registry de

Si el autor de la llamada no tiene acceso de escritura a una clave e intenta abrir la clave, la clave se abre con el acceso máximo permitido para ese autor de llamada.

Si se establece la marca REG_KEY_DONT_SILENT_FAIL para la clave, se produce un error en la operación y no se abre la clave. Para obtener más información, vea "Controlling Registry Virtualization" más adelante en este tema.

Virtualización del Registro de escritura de

Si el autor de la llamada no tiene acceso de escritura a una clave e intenta escribir un valor en ella o crear una subclave, el valor se escribe en el almacén virtual.

Por ejemplo, si un usuario limitado intenta escribir un valor en la siguiente clave: HKEY_LOCAL_MACHINE\Software\AppKey1, la virtualización redirige la operación de escritura a HKEY_USERS\<SID de usuario>_Classes\VirtualStore\Machine\Software\AppKey1.

Read Registry Virtualization

Si el autor de la llamada lee de una clave virtualizada, el registro presenta una vista combinada de los valores virtualizados (del almacén virtual) y los valores no virtuales (del almacén global) al autor de la llamada.

Por ejemplo, supongamos que HKEY_LOCAL_MACHINE\Software\ AppKey1 contiene dos valores V1 y V2 y que un usuario limitado escribe un valor V3 en la clave. Cuando el usuario intenta leer valores de esta clave, la vista combinada incluye los valores V1 y V2 del almacén global y el valor V3 del almacén virtual.

Tenga en cuenta que los valores virtuales tienen prioridad sobre los valores globales cuando están presentes. En el ejemplo anterior, aunque el almacén global tuviera el valor V3 en esta clave, el valor V3 se devolvería al autor de la llamada desde el almacén virtual. Si V3 se eliminara del almacén virtual, se devolverá V3 desde el almacén global. Es decir, si V3 se eliminara de HKEY_USERS\<SID de usuario>_Classes\VirtualStore\Machine\Software\AppKey1 pero HKEY_LOCAL_MACHINE\Software\AppKey1 tuviera un valor V3, ese valor se devolvería desde el almacén global.

Ámbito de virtualización del registro

La virtualización del Registro solo está habilitada para lo siguiente:

  • Procesos interactivos de 32 bits.
  • Claves de HKEY_LOCAL_MACHINE\Software.
  • Claves en las que un administrador puede escribir. (Si un administrador no puede escribir en una clave, la aplicación habría producido un error en versiones anteriores de Windows incluso si un administrador la ejecutara).

La virtualización del Registro está deshabilitada para lo siguiente:

  • Procesos de 64 bits.

  • Procesos que no son interactivos, como servicios.

    Tenga en cuenta que el uso del Registro como mecanismo de comunicación entre procesos (IPC) entre un servicio (o cualquier otro proceso que no tenga habilitada la virtualización) y una aplicación no funcionará correctamente si la clave está virtualizada. Por ejemplo, si un servicio antivirus actualiza sus archivos de firma en función de un valor establecido por una aplicación, el servicio nunca actualizará sus archivos de firma porque el servicio lee desde el almacén global, pero la aplicación escribe en el almacén virtual.

  • Procesa que suplanta a un usuario. Si un proceso intenta una operación al suplantar a un usuario, esa operación no se virtualizará.

  • Procesos en modo kernel, como controladores.

  • Los procesos que tienen requestedExecutionLevel especificados en sus manifiestos.

  • Claves y subclaves de HKEY_LOCAL_MACHINE\Software\Classes, HKEY_LOCAL_MACHINE\Software\Microsoft\Windowsy HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT.

Control de la virtualización del registro

Además de controlar la virtualización en un nivel de aplicación mediante requestedExecutionLevel en el manifiesto, un administrador puede habilitar o deshabilitar la virtualización por clave para las claves de HKEY_LOCAL_MACHINE\Software. Para ello, use la opción Reg.exe utilidad de línea de comandos FLAGS con las marcas enumeradas en la tabla siguiente.

Bandera Significado
REG_KEY_DONT_SILENT_FAIL Esta marca deshabilita la virtualización del Registro abierta. Si se establece esta marca y se produce un error en una operación abierta en una clave que tiene habilitada la virtualización, el registro no intenta volver a abrir la clave. Si esta marca está desactivada, el Registro intenta volver a abrir la clave con MAXIMUM_ALLOWED acceso en lugar del acceso solicitado.
REG_KEY_DONT_VIRTUALIZE Esta marca deshabilita la virtualización del Registro de escritura. Si se establece esta marca y se produce un error en una operación de creación de clave o valor establecido porque el autor de la llamada no tiene acceso suficiente a la clave primaria, se produce un error en la operación. Si esta marca está desactivada, el Registro intenta escribir la clave o el valor en el almacén virtual. El autor de la llamada debe tener la KEY_READ derecha en la clave primaria.
REG_KEY_RECURSE_FLAG Si se establece esta marca, las marcas de virtualización del Registro se propagan desde la clave primaria. Si esta marca está clara, no se propagan las marcas de virtualización del Registro. Cambiar esta marca afecta solo a las nuevas claves descendientes creadas después de cambiar la marca. No establece ni borra estas marcas para las claves descendientes existentes.

 

En el ejemplo siguiente se muestra el uso de la utilidad de línea de comandos Reg.exe con la opción FLAGS para consultar el estado de las marcas de virtualización de una clave.

C:\>reg flags HKLM\Software\AppKey1 QUERY

HKEY_LOCAL_MACHINE\Software\AppKey1

        REG_KEY_DONT_VIRTUALIZE: CLEAR
        REG_KEY_DONT_SILENT_FAIL: CLEAR
        REG_KEY_RECURSE_FLAG: CLEAR

The operation completed successfully.

Cada vez que la auditoría está habilitada en una clave que se está virtualizando, se genera un nuevo evento de auditoría de virtualización para indicar que la clave se está virtualizando (además de los eventos de auditoría habituales). Los administradores pueden usar esta información para supervisar el estado de la virtualización en sus sistemas.

Introducción al control de cuentas de usuario

Descripción y configuración del control de cuentas de usuario

procedimientos recomendados y directrices para desarrolladores para aplicaciones en un entorno con privilegios mínimos