次の方法で共有


アプリケーション ハイブに対するレジストリ操作のフィルター処理

ユーザー モード アプリケーションは、 レジストリ内のアプリケーション ハイブを 使用して、アプリ固有の状態データを格納します。

レジストリ フィルター ドライバーは、アプリケーション ハイブに対するレジストリ操作の RegistryCallback ルーチンの呼び出しを受け取ります。

これらの呼び出しでは、アプリケーション ハイブに対するレジストリ操作と、他の種類のレジストリ ハイブに対する操作は区別されません。

アプリケーション ハイブを読み込むには、アプリが RegLoadAppKey を呼び出します。

アプリケーション ハイブは、\\REGISTRY\\Aまたは\\REGISTRY\\MACHINEではなく、\\REGISTRY\\USERの下に読み込まれます。

\\REGISTRY\\Aを走査する方法はありません。 \REGISTRY\A の下でキーを開こうとすると、エラー状態 STATUS_ACCESS_DENIEDで失敗します。

アプリケーション ハイブのキーにアクセスするために、アプリは RegLoadAppKey を呼び出すときに受け取るハンドルを使用します。

オペレーティング システムは、ハイブに対するすべてのハンドルが閉じられた後、アプリケーション ハイブを自動的にアンロードします。

各キーが独自のセキュリティ記述子でセキュリティ保護されている他の種類のレジストリ ハイブとは対照的に、アプリケーション ハイブのセキュリティは Hive ファイルのセキュリティ記述子に基づいています。

これは、次のことを意味します。

  • アプリケーション ハイブの個々のキーにセキュリティ記述子を設定しようとすると、エラー状態 STATUS_ACCESS_DENIED失敗します。

  • ハイブの読み込みに成功したエンティティは、ハイブ全体を変更できます。

作成キーとオープン キー操作 (RegNtPreOpenKey、RegNtPreOpenKeyExRegNtPreCreateKeyおよび RegNtPreCreateKeyEx 通知値によって示される) を処理するレジストリ フィルター ドライバーは、絶対パス (\\REGISTRY\\A\\ 以降) を使用してアプリケーション ハイブを開かないように注意する必要があります。レジストリ マネージャーのみがこれを行うことができます。

レジストリ フィルター ドライバーが ( ZwOpenKey ルーチンを呼び出すことによって) この方法でアプリケーション ハイブを開こうとすると、操作はエラー状態 STATUS_ACCESS_DENIEDで失敗します。

絶対パス名の文字列は、REG_CREATE_KEY_INFORMATION、REG_CREATE_KEY_INFORMATION_V1REG_OPEN_KEY_INFORMATION、またはREG_OPEN_KEY_INFORMATION_V1構造体の CompleteName メンバー表示されます。