RegOverridePredefKey 関数 (winreg.h)
定義済みのレジストリ キーを指定したレジストリ キーにマップします。
構文
LSTATUS RegOverridePredefKey(
[in] HKEY hKey,
[in, optional] HKEY hNewHKey
);
パラメーター
[in] hKey
次のいずれかの 定義済みキーへのハンドル。
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_USERS
[in, optional] hNewHKey
開いているレジストリ キーへのハンドル。 このハンドルは、 RegCreateKeyEx または RegOpenKeyEx 関数によって返されます。 定義済みのキーの 1 つを指定することはできません。 関数は hKey をマップして hNewHKey キーを参照します。 これは呼び出し元のプロセスにのみ影響します。
hNewHKey が NULL の場合、関数は定義済みのキーの既定のマッピングを復元します。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FormatMessage 関数を FORMAT_MESSAGE_FROM_SYSTEM フラグと共に使用すると、エラーの一般的な説明を取得できます。
解説
RegOverridePredefKey 関数は、ソフトウェア インストール プログラムを対象としています。 これにより、定義済みのキーの再マップ、システムにインストールされる DLL コンポーネントの読み込み、DLL 内のエントリ ポイントの呼び出し、コンポーネントが実行しようとしたレジストリへの変更の確認を行うことができます。 その後、インストール プログラムは、DLL によって意図された場所に変更を書き込んだり、データを書き込む前に変更を加えたりできます。
たとえば、アプリケーションのインストールの一部として ActiveX コントロールをインストールするインストール プログラムを考えてみましょう。 インストール プログラムは、コントロールが自身を登録できるように、コントロールの DllRegisterServer エントリ ポイントを呼び出す必要があります。 この呼び出しの前に、インストール プログラムは RegOverridePredefKey を呼び出して、HKEY_CLASSES_ROOTをTemporaryInstall\DllRegistration などの一時キー HKEY_CURRENT_USER\再マップできます。 その後、 DllRegisterServer が呼び出され、ActiveX コントロールによってレジストリ エントリが一時キーに書き込まれます。 その後、インストール プログラムは RegOverridePredefKey をもう 一度呼び出して 、HKEY_CLASSES_ROOTの元のマッピングを復元します。 インストール・プログラムは、必要に応じて、元の HKEY_CLASSES_ROOTにコピーする前に、一時キーに書き込まれたキーを変更できます。
RegOverridePredefKey の呼び出し後、RegCloseKey を安全に呼び出して hNewHKey ハンドルを閉じることができます。 システムは 、hNewHKey への独自の参照を保持します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |