次の方法で共有


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 を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winreg.h (Windows.h を含む)
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

RegCloseKey

RegCreateKeyTransacted の

RegDeleteKeyTransacted の

レジストリ関数 を する

レジストリの概要