Partager via


Filtrage des opérations de registre sur les concentrateurs d'application

Les applications en mode utilisateur utilisent des ruches d’application dans le Registre pour stocker des données d’état spécifiques à l’application.

Un pilote de filtre reçoit des appels à sa routine RegistryCallback pour les opérations du registre sur les ruches d’application.

Ces appels ne distinguent pas les opérations de registre sur les ruches d'application des opérations sur d'autres types de ruches de registre.

Pour charger une ruche d’application, une application appelle RegLoadAppKey.

Les ruches d’application sont chargées sous \\REGISTRY\\A au lieu de sous \\REGISTRY\\MACHINE ou \\REGISTRY\\USER.

Il n’y a aucun moyen de traverser \\REGISTRY\\A. Une tentative d’ouverture d’une clé sous \REGISTRY\A échoue avec l’état d’erreur STATUS_ACCESS_DENIED.

Pour accéder à une clé dans une ruche d’application, une application utilise le handle qu’elle reçoit lorsqu’elle appelle RegLoadAppKey.

Le système d’exploitation décharge automatiquement la ruche de l’application une fois que tous les handles sur la ruche sont fermés.

Contrairement à d’autres types de ruches de Registre, pour lesquelles chaque clé est sécurisée avec son propre descripteur de sécurité, la sécurité d’une ruche d’application est basée sur le descripteur de sécurité du fichier hive.

Cela signifie que :

  • Une tentative de définition d’un descripteur de sécurité sur une clé individuelle dans une ruche d’application échoue avec l’état d’erreur STATUS_ACCESS_DENIED.

  • Une entité qui réussit à charger la ruche peut modifier l’intégralité de la ruche.

Les pilotes de filtre du Registre qui gèrent les opérations de création et d'ouverture de clés (indiquées par les valeurs de notification RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKey et RegNtPreCreateKeyEx) ne doivent pas utiliser un chemin absolu (celui qui commence par \\REGISTRY\\A\\) pour ouvrir une fusion d'application ; seul le gestionnaire de Registre peut le faire.

Si un pilote de filtre de Registre tente d’ouvrir une ruche d’application de cette façon (par exemple, en appelant la routine ZwOpenKey ), l’opération échoue avec l’état d’erreur STATUS_ACCESS_DENIED.

La chaîne de nom de chemin d’accès absolu apparaît dans le membre CompleteName de la structure REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION ou REG_OPEN_KEY_INFORMATION_V1 .