ユーザー モード アプリケーションは、 レジストリ内のアプリケーション ハイブを 使用して、アプリ固有の状態データを格納します。
レジストリ フィルター ドライバーは、アプリケーション ハイブに対するレジストリ操作の RegistryCallback ルーチンの呼び出しを受け取ります。
これらの呼び出しでは、アプリケーション ハイブに対するレジストリ操作と、他の種類のレジストリ ハイブに対する操作は区別されません。
アプリケーション ハイブを読み込むには、アプリが RegLoadAppKey を呼び出します。
アプリケーション ハイブは、\\REGISTRY\\A
または\\REGISTRY\\MACHINE
ではなく、\\REGISTRY\\USER
の下に読み込まれます。
\\REGISTRY\\A
を走査する方法はありません。 \REGISTRY\A の下でキーを開こうとすると、エラー状態 STATUS_ACCESS_DENIEDで失敗します。
アプリケーション ハイブのキーにアクセスするために、アプリは RegLoadAppKey を呼び出すときに受け取るハンドルを使用します。
オペレーティング システムは、ハイブに対するすべてのハンドルが閉じられた後、アプリケーション ハイブを自動的にアンロードします。
各キーが独自のセキュリティ記述子でセキュリティ保護されている他の種類のレジストリ ハイブとは対照的に、アプリケーション ハイブのセキュリティは Hive ファイルのセキュリティ記述子に基づいています。
これは、次のことを意味します。
アプリケーション ハイブの個々のキーにセキュリティ記述子を設定しようとすると、エラー状態 STATUS_ACCESS_DENIED失敗します。
ハイブの読み込みに成功したエンティティは、ハイブ全体を変更できます。
作成キーとオープン キー操作 (RegNtPreOpenKey、RegNtPreOpenKeyEx、RegNtPreCreateKey、および RegNtPreCreateKeyEx 通知値によって示される) を処理するレジストリ フィルター ドライバーは、絶対パス (\\REGISTRY\\A\\
以降) を使用してアプリケーション ハイブを開かないように注意する必要があります。レジストリ マネージャーのみがこれを行うことができます。
レジストリ フィルター ドライバーが ( ZwOpenKey ルーチンを呼び出すことによって) この方法でアプリケーション ハイブを開こうとすると、操作はエラー状態 STATUS_ACCESS_DENIEDで失敗します。
絶対パス名の文字列は、REG_CREATE_KEY_INFORMATION、REG_CREATE_KEY_INFORMATION_V1、REG_OPEN_KEY_INFORMATION、またはREG_OPEN_KEY_INFORMATION_V1構造体の CompleteName メンバーに表示されます。