Compartilhar via


Filtrando operações de registro em seções de aplicativo

Os aplicativos no modo de usuário usam hives de aplicativo no registro para armazenar dados de estado específicos do aplicativo.

Um driver de filtro de registro recebe chamadas para sua rotina RegistryCallback para operações de registro em hives de aplicativo.

Essas chamadas não distinguem entre operações do Registro em hives de aplicativo e operações em outros tipos de hives do Registro.

Para carregar um hive de aplicativo, um aplicativo chama RegLoadAppKey.

Os hives de aplicativo são carregados sob \\REGISTRY\\A em vez de sob \\REGISTRY\\MACHINE ou \\REGISTRY\\USER.

Não há como atravessar \\REGISTRY\\A. Uma tentativa de abrir uma chave em \REGISTRY\A falha com o status de erro STATUS_ACCESS_DENIED.

Para acessar uma chave em um hive de aplicativo, um aplicativo usa o identificador que recebe quando chama RegLoadAppKey.

O sistema operacional descarrega automaticamente o hive do aplicativo depois que todas as alças para o hive são fechadas.

Ao contrário de outros tipos de hives do Registro, para os quais cada chave é protegida com seu próprio descritor de segurança, a segurança de um hive de aplicativo é baseada no descritor de segurança do arquivo hive.

Isso significa que:

  • Uma tentativa de definir um descritor de segurança em uma chave individual em um hive de aplicativo falha com o status de erro STATUS_ACCESS_DENIED.

  • Uma entidade com êxito no carregamento do hive pode modificar todo o hive.

Os drivers de filtro do Registro que lidam com as operações create-key e open-key (que são indicadas pelos valores de notificação RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKey e RegNtPreCreateKeyEx ) devem ter cuidado para não usar um caminho absoluto (um começando com \\REGISTRY\\A\\) para abrir um hive de aplicativo; somente o gerente do Registro pode fazer isso.

Se um driver de filtro do Registro tentar abrir um hive de aplicativo dessa forma (por exemplo, chamando a rotina ZwOpenKey ), a operação falhará com o status de erro STATUS_ACCESS_DENIED.

A cadeia de caracteres de nome de caminho absoluto aparece no membro CompleteName da estrutura REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION ou REG_OPEN_KEY_INFORMATION_V1 .