Filtro delle operazioni del Registro di sistema in Hives dell'applicazione

Le applicazioni in modalità utente usano hives dell'applicazione nel Registro di sistema per archiviare dati di stato specifici dell'app.

Un driver di filtro del Registro di sistema riceve chiamate alla routine RegistryCallback per le operazioni del Registro di sistema sui hives dell'applicazione. Queste chiamate non distingueno tra operazioni del Registro di sistema su hives dell'applicazione e operazioni su altri tipi di hives del Registro di sistema.

Per caricare un hive dell'applicazione, un'app chiama RegLoadAppKey.

Gli hives dell'applicazione vengono caricati \\REGISTRY\\A invece di sotto \\REGISTRY\\MACHINE o \\REGISTRY\\USER.

Si noti che non è possibile attraversare \\REGISTRY\\A. Un tentativo di aprire una chiave in \REGISTRY\A non riesce con lo stato di errore STATUS_ACCESS_DENIED.

Per accedere a una chiave in un hive dell'applicazione, un'app usa l'handle che riceve quando chiama RegLoadAppKey.

Il sistema operativo scarica automaticamente l'hive dell'applicazione dopo che tutti gli handle all'hive vengono chiusi.

Al contrario di altri tipi di hives del Registro di sistema, per cui ogni chiave è protetta con il relativo descrittore di sicurezza, la sicurezza di un hive dell'applicazione si basa sul descrittore di sicurezza del file hive. Ciò significa che:

  • Un tentativo di impostare un descrittore di sicurezza su una singola chiave in un hive dell'applicazione non riesce con lo stato di errore STATUS_ACCESS_DENIED.
  • Un'entità che ha esito positivo nel caricamento dell'hive può modificare l'intero hive.

I driver di filtro del Registro di sistema che gestiscono operazioni create-key e open-key (indicate dai valori regNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKey e RegNtPreCreateKeyEx) devono prestare attenzione a non usare un percorso assoluto (uno a partire \\REGISTRY\\A\\da ) per aprire un'applicazione hive; solo la gestione del Registro di sistema può eseguire questa operazione. Se un driver di filtro del Registro di sistema tenta di aprire un hive dell'applicazione in questo modo (ad esempio chiamando la routine ZwOpenKey ), l'operazione non riesce con lo stato di errore STATUS_ACCESS_DENIED.

La stringa nome percorso assoluto viene visualizzata nel membro CompleteName della struttura REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION o REG_OPEN_KEY_INFORMATION_V1.