RegOpenKeyTransactedA 関数 (winreg.h)
指定されたレジストリ キーを開き、トランザクションに関連付けます。 キー名では大文字と小文字は区別されないことに注意してください。
構文
LSTATUS RegOpenKeyTransactedA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[in] DWORD ulOptions,
[in] REGSAM samDesired,
[out] PHKEY phkResult,
[in] HANDLE hTransaction,
PVOID pExtendedParemeter
);
パラメーター
[in] hKey
開いているレジストリ キーへのハンドル。 このハンドルは、 RegCreateKeyEx、 RegCreateKeyTransacted、 RegOpenKeyEx、または RegOpenKeyTransacted 関数によって返されます。 また、次の 定義済みキーのいずれかを指定することもできます。
HKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS
[in, optional] lpSubKey
開くレジストリ サブキーの名前。
キー名では大文字と小文字は区別されません。
lpSubKey パラメーターが NULL または空の文字列へのポインターであり、hKey が定義済みのキーの場合、システムは定義済みのキーを更新し、phkResult は関数に渡されたのと同じ hKey ハンドルを受け取ります。 それ以外の場合、 phkResult は、開かれたキーへの新しいハンドルを受け取ります。
詳細については、「 レジストリ要素のサイズ制限」を参照してください。
[in] ulOptions
このパラメーターは予約されており、0 である必要があります。
[in] samDesired
キーに対して必要なアクセス権を指定するマスク。 キーのセキュリティ記述子が呼び出し元プロセスに対して要求されたアクセスを許可しない場合、関数は失敗します。 詳細については、「 レジストリ キーのセキュリティとアクセス権」を参照してください。
[out] phkResult
開かれたキーへのハンドルを受け取る変数へのポインター。 キーが定義済みのレジストリ キーの 1 つでない場合は、ハンドルの使用が完了したら 、RegCloseKey 関数を呼び出します。
[in] hTransaction
アクティブなトランザクションへのハンドル。 このハンドルは、 CreateTransaction 関数によって返されます。
pExtendedParemeter
このパラメーターは予約済みであり、 NULL である必要があります。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FormatMessage 関数を FORMAT_MESSAGE_FROM_SYSTEM フラグと共に使用すると、エラーの一般的な説明を取得できます。
注釈
この関数を使用してキーを開くと、そのキーに対する後続の操作が処理されます。 トランザクションがコミットされる前に、トランザクション以外の操作がキーに対して実行された場合、トランザクションはロールバックされます。 トランザクションがコミットまたはロールバックされた後、 RegCreateKeyTransacted 関数または RegOpenKeyTransacted 関数とアクティブなトランザクション ハンドルを使用してキーを開き直して、追加の操作をトランザクションする必要があります。 トランザクションの詳細については、「 カーネル トランザクション マネージャー」を参照してください。
このキーのサブキーに対する後続の操作は自動的には処理されないことに注意してください。 したがって、 RegDeleteKeyEx 関数はトランザクション削除操作を実行しません。 代わりに、 RegDeleteKeyTransacted 関数を使用して、トランザクション削除操作を実行します。
RegCreateKeyTransacted 関数とは異なり、レジストリにキーが存在しない場合、RegOpenKeyTransacted 関数は指定されたキーを作成しません。
サービスまたはアプリケーションが異なるユーザーを偽装する場合は、この関数を HKEY_CURRENT_USERと共に使用しないでください。 代わりに、 RegOpenCurrentUser 関数を呼び出します。
phkResult で返されるキーが定義済みのレジストリ キーである場合、指定されたトランザクションには含まれません。
1 つのレジストリ キーを 65,534 回だけ開くことができます。 65,535番目 のオープン操作を試みると、この関数は ERROR_NO_SYSTEM_RESOURCES で失敗します。
注意
winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegOpenKeyTransacted を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |