Freigeben über


Filtern von Registrierungsvorgängen nach Anwendungsstrukturen

Benutzermodusanwendungen verwenden Anwendungsstrukturen in der Registrierung , um appspezifische Zustandsdaten zu speichern.

Ein Registrierungsfiltertreiber empfängt Aufrufe seiner RegistryCallback-Routine für Registrierungsvorgänge in Anwendungsstrukturen. Diese Aufrufe unterscheiden nicht zwischen Registrierungsvorgängen für Anwendungsstrukturen und Vorgängen für andere Arten von Registrierungsstrukturen.

Zum Laden einer Anwendungsstruktur ruft eine App RegLoadAppKey auf.

Anwendungsstrukturen werden unter \\REGISTRY\\A anstelle von unter \\REGISTRY\\MACHINE oder \\REGISTRY\\USERgeladen.

Beachten Sie, dass es keine Möglichkeit gibt, zu durchqueren \\REGISTRY\\A. Beim Versuch, einen Schlüssel unter \REGISTRY\A zu öffnen, tritt ein Fehler status STATUS_ACCESS_DENIED auf.

Um auf einen Schlüssel in einer Anwendungsstruktur zuzugreifen, verwendet eine App das Handle, das sie beim Aufrufen von RegLoadAppKey empfängt.

Das Betriebssystem entlädt die Anwendungsstruktur automatisch, nachdem alle Handles in der Struktur geschlossen wurden.

Im Gegensatz zu anderen Typen von Registrierungsstrukturen, bei denen jeder Schlüssel mit einem eigenen Sicherheitsdeskriptor geschützt ist, basiert die Sicherheit einer Anwendungsstruktur auf dem Sicherheitsdeskriptor der Hive-Datei. Dies bedeutet Folgendes:

  • Beim Versuch, einen Sicherheitsdeskriptor für einen einzelnen Schlüssel in einer Anwendungsstruktur festzulegen, tritt ein Fehler status STATUS_ACCESS_DENIED auf.
  • Eine Entität, die die Struktur erfolgreich lädt, kann die gesamte Struktur ändern.

Registrierungsfiltertreiber, die create-key- und open-key-Vorgänge verarbeiten (die durch die Benachrichtigungswerte RegNtPreOpenKey, RegNtPreOpenKeyEx, RegNtPreCreateKey und RegNtPreCreateKeyEx angegeben werden), müssen darauf achten, dass sie keinen absoluten Pfad (der mit \\REGISTRY\\A\\beginnt) zum Öffnen einer Anwendungsstruktur verwenden. Dies kann nur der Registrierungs-Manager tun. Wenn ein Registrierungsfiltertreiber versucht, eine Anwendungsstruktur auf diese Weise zu öffnen (z. B. durch Aufrufen der ZwOpenKey-Routine), schlägt der Vorgang mit einem Fehler status STATUS_ACCESS_DENIED fehl.

Die absolute Pfadnamenzeichenfolge wird im CompleteName-Member der struktur REG_CREATE_KEY_INFORMATION, REG_CREATE_KEY_INFORMATION_V1, REG_OPEN_KEY_INFORMATION oder REG_OPEN_KEY_INFORMATION_V1 angezeigt.