Compartir a través de


Filtrado de operaciones del Registro en subárboles de aplicaciones

Las aplicaciones en modo de usuario usan subárboles de aplicaciones en el Registro para almacenar datos de estado específicos de la aplicación.

Un controlador de filtro del Registro recibe llamadas a su rutina RegistryCallback para las operaciones del Registro en los subárboles de la aplicación.

Estas llamadas no distinguen entre las operaciones del registro en las colmenas de aplicaciones y las operaciones en otros tipos de colmenas del registro.

Para cargar un subárbol de aplicación, una aplicación llama a RegLoadAppKey.

Los subárboles de la aplicación se cargan en \\REGISTRY\\A en lugar de en \\REGISTRY\\MACHINE o \\REGISTRY\\USER.

No hay forma de atravesar \\REGISTRY\\A. Se produce un error al intentar abrir una clave en \REGISTRY\A con el estado de error STATUS_ACCESS_DENIED.

Para acceder a una clave de un subárbol de aplicación, una aplicación usa el identificador que recibe cuando llama a RegLoadAppKey.

El sistema operativo descarga automáticamente el subárbol de la aplicación después de cerrar todos los identificadores del subárbol.

A diferencia de otros tipos de subárboles del Registro, para los que cada clave está protegida con su propio descriptor de seguridad, la seguridad de un subárbol de aplicación se basa en el descriptor de seguridad del archivo de Hive.

Esto significa que:

  • En un intento de establecer un descriptor de seguridad en una clave individual en un registro de la aplicación, se produce un error con el estado STATUS_ACCESS_DENIED.

  • Una entidad que logra cargar la colmena puede modificar toda la colmena.

Los controladores de filtro del Registro que gestionan las operaciones de creación de clave y apertura de clave (que se indican mediante los valores de notificación RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKey y RegNtPreCreateKeyEx) deben tener cuidado de no usar una ruta de acceso absoluta (una que comienza con \\REGISTRY\\A\\) para abrir un hive de aplicación; solo el administrador del Registro puede hacerlo.

Si un controlador de filtro del Registro intenta abrir un subárbol de aplicación de esta manera (por ejemplo, llamando a la rutina ZwOpenKey ), la operación produce un error con el estado de error STATUS_ACCESS_DENIED.

La cadena de nombre de ruta de acceso absoluta aparece en el miembro CompleteName de la estructura REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION o REG_OPEN_KEY_INFORMATION_V1.