RegOpenKeyExA 関数 (winreg.h)
指定したレジストリ キーを開きます。 キー名では大文字と小文字が区別されないことに注意してください。
キーに対してトランザクション レジストリ操作を実行するには、RegOpenKeyTransacted 関数
構文
LSTATUS RegOpenKeyExA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[in] DWORD ulOptions,
[in] REGSAM samDesired,
[out] PHKEY phkResult
);
パラメーター
[in] hKey
開いているレジストリ キーへのハンドル。 このハンドルは、
HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS
[in, optional] lpSubKey
開くレジストリ サブキーの名前。
キー名では大文字と小文字は区別されません。
詳細については、「レジストリ要素のサイズ制限
[in] ulOptions
キーを開くときに適用するオプションを指定します。 このパラメーターを 0 または次に設定します。
価値 | 意味 |
---|---|
|
キーはシンボリック リンクです。 レジストリ シンボリック リンクは、絶対に必要な場合にのみ使用する必要があります。 |
[in] samDesired
開くキーに対する必要なアクセス権を指定するマスク。 キーのセキュリティ記述子が呼び出し元プロセスに対して要求されたアクセスを許可していない場合、関数は失敗します。 詳細については、「レジストリ キーのセキュリティとアクセス権のを
[out] phkResult
開かれたキーへのハンドルを受け取る変数へのポインター。 キーが定義済みのレジストリ キーの 1 つでない場合は、ハンドルの使用が完了した後、RegCloseKey 関数を呼び出します。
戻り値
関数が成功した場合、戻り値はERROR_SUCCESS。
関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FormatMessage 関数を FORMAT_MESSAGE_FROM_SYSTEM フラグと共に使用すると、エラーの一般的な説明を取得できます。
手記
レガシ バージョンの Windows では、この API も kernel32.dllによって公開されます。
備考
RegCreateKeyEx 関数とは異なり、RegOpenKeyEx 関数は、レジストリにキーが存在しない場合、指定されたキーを作成しません。
特定のレジストリ操作では、キーのハンドルが取得されたときに指定されたアクセス マスクではなく、キーのセキュリティ記述子に対してアクセス チェックを実行します。 たとえば、samDesired のKEY_READでキーを開いた場合でも、キーのセキュリティ記述子で許可されている場合は、レジストリ キーを作成するために使用できます。 これに対し、RegSetValueEx 関数では、KEY_SET_VALUEアクセス権を使用してキーを開く必要があります。
サービスまたはアプリケーションが異なるユーザーを偽装する場合は、この関数を HKEY_CURRENT_USERで使用しないでください。 代わりに、RegOpenCurrentUser 関数を呼び出します。
特定のレジストリ キーにアクセスする操作はリダイレクトされることに注意してください。 詳細については、「レジストリ仮想化
例
lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);
if (lResult != ERROR_SUCCESS)
{
if (lResult == ERROR_FILE_NOT_FOUND) {
printf("Key not found.\n");
return TRUE;
}
else {
printf("Error opening key.\n");
return FALSE;
}
}
コンテキストでこの例を表示するには、「サブキーを使用したキーの削除」を参照してください。
手記
winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegOpenKeyEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winreg.h (Windows.h を含む) |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |
関連項目
RegCreateKeyEx の
RegDeleteKey を
レジストリ関数 を