次の方法で共有


RegCreateKeyTransactedA 関数 (winreg.h)

指定したレジストリ キーを作成し、トランザクションに関連付けます。 キーが既に存在する場合は、関数によってキーが開かれます。 キー名では大文字と小文字が区別されないことに注意してください。

システム ファイルやレジストリ ハイブを含むシステム状態をバックアップまたは復元するアプリケーションでは、レジストリ関数の代わりに ボリューム シャドウ コピー サービス を使用する必要があります。

構文

LSTATUS RegCreateKeyTransactedA(
  [in]            HKEY                        hKey,
  [in]            LPCSTR                      lpSubKey,
                  DWORD                       Reserved,
  [in, optional]  LPSTR                       lpClass,
  [in]            DWORD                       dwOptions,
  [in]            REGSAM                      samDesired,
  [in, optional]  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [out]           PHKEY                       phkResult,
  [out, optional] LPDWORD                     lpdwDisposition,
  [in]            HANDLE                      hTransaction,
                  PVOID                       pExtendedParemeter
);

パラメーター

[in] hKey

開いているレジストリ キーへのハンドル。 呼び出し元のプロセスには、キーへのKEY_CREATE_SUB_KEYアクセス権が必要です。 詳細については、「レジストリ キーのセキュリティとアクセス権のを する」を参照してください。

キー作成のアクセスは、ハンドルが取得されたときに指定されたアクセス マスクではなく、レジストリ キーのセキュリティ記述子に対してチェックされます。 したがって、hKey がKEY_READの samDesired で開かれた場合でも、セキュリティ記述子で許可されている場合はキーを作成する操作で使用できます。

このハンドルは、RegCreateKeyTransacted または RegOpenKeyTransacted 関数 によって返されます。または、次の 定義済みキーのいずれかになります。

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

[in] lpSubKey

この関数が開くか作成するサブキーの名前。 指定するサブキーは、hKey パラメーターによって識別されるキーのサブキーである必要があります。レジストリ ツリーの深いレベルは最大 32 レベルです。 キー名の詳細については、「レジストリの 構造」を参照してください。

lpSubKey が空の文字列へのポインターである場合、phkResult hKeyで指定されたキー 新しいハンドルを受け取ります。

このパラメーターは NULLできません。

Reserved

このパラメーターは予約済みであり、0 である必要があります。

[in, optional] lpClass

このキーのユーザー定義クラス。 このパラメーターは無視できます。 このパラメーターは NULLできます。

[in] dwOptions

このパラメーターには、次のいずれかの値を指定できます。

価値 意味
REG_OPTION_BACKUP_RESTORE
0x00000004L
このフラグが設定されている場合、関数は samDesired パラメーター を無視し、キーのバックアップまたは復元に必要なアクセス権を持つキーを開こうとします。 呼び出し元のスレッドでSE_BACKUP_NAME権限が有効になっている場合、キーはACCESS_SYSTEM_SECURITYとKEY_READアクセス権で開かれます。 呼び出し元のスレッドでSE_RESTORE_NAME権限が有効になっている場合、キーはACCESS_SYSTEM_SECURITYで開き、アクセス権KEY_WRITE。 両方の特権が有効になっている場合、キーには両方の特権に対する結合されたアクセス権があります。 詳細については、「特別な特権を使用した実行 」を参照してください。
REG_OPTION_NON_VOLATILE
0x00000000L
このキーは揮発性ではありません。これが既定値です。 情報はファイルに格納され、システムの再起動時に保持されます。 RegSaveKey 関数は、揮発性ではないキーを保存します。
REG_OPTION_VOLATILE
0x00000001L
関数によって作成されるすべてのキーは揮発性です。 情報はメモリに格納され、対応するレジストリ ハイブがアンロードされるときに保持されません。 HKEY_LOCAL_MACHINEの場合、これはシステムがシャットダウンされるときに発生します。 RegLoadKey 関数によって読み込まれたレジストリ キーの場合、これは対応する RegUnLoadKey が実行されるときに発生します。 RegSaveKey 関数は揮発性キーを保存しません。 このフラグは、既に存在するキーでは無視されます。

[in] samDesired

作成するキーのアクセス権を指定するマスク。 詳細については、「レジストリ キーのセキュリティとアクセス権のを する」を参照してください。

[in, optional] lpSecurityAttributes

返されたハンドルを子プロセスによって継承できるかどうかを決定する SECURITY_ATTRIBUTES 構造体へのポインター。 lpSecurityAttributes が NULL場合、ハンドルを継承できません。

構造体の lpSecurityDescriptor メンバーは、新しいキーのセキュリティ記述子を指定します。 lpSecurityAttributes が NULL場合、キーは既定のセキュリティ記述子を取得します。 キーの既定のセキュリティ記述子の ACL は、直接の親キーから継承されます。

[out] phkResult

開いているキーまたは作成されたキーへのハンドルを受け取る変数へのポインター。 キーが定義済みのレジストリ キーの 1 つでない場合は、ハンドルの使用が完了した後、RegCloseKey 関数を呼び出します。

[out, optional] lpdwDisposition

次のいずれかの処理値を受け取る変数へのポインター。

価値 意味
REG_CREATED_NEW_KEY
0x00000001L
キーが存在せず、作成されました。
REG_OPENED_EXISTING_KEY
0x00000002L
キーは存在し、変更されずに単純に開かれました。
 

lpdwDisposition NULL場合、処理情報は返されません。

[in] hTransaction

アクティブなトランザクションへのハンドル。 このハンドルは、CreateTransaction 関数によって返されます。

pExtendedParemeter

このパラメーターは予約されており、NULLする必要があります。

戻り値

関数が成功した場合、戻り値はERROR_SUCCESS。

関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FormatMessage 関数を FORMAT_MESSAGE_FROM_SYSTEM フラグと共に使用すると、エラーの一般的な説明を取得できます。

備考

この関数を使用してキーを作成すると、そのキーに対する後続の操作が処理されます。 トランザクションがコミットされる前に、トランザクション以外の操作がキーに対して実行された場合、トランザクションはロールバックされます。 トランザクションがコミットまたはロールバックされた後、RegCreateKeyTransacted 使用してキーを再度開くか、アクティブなトランザクション ハンドルを使用して RegOpenKeyTransacted を して、追加の操作を処理する必要があります。 トランザクションの詳細については、「カーネル トランザクション マネージャーのを参照してください。

このキーのサブキーに対する後続の操作は自動的には処理されないことに注意してください。 したがって、RegDeleteKeyEx は、トランザクション削除操作を実行しません。 代わりに、RegDeleteKeyTransacted 関数を使用して、トランザクション削除操作を実行します。

RegCreateKeyTransacted 関数によって作成されるキーに値がありません。 アプリケーションでは、RegSetValueEx 関数を使用してキー値を設定できます。

RegCreateKeyTransacted 関数は、指定されたパスに不足しているすべてのキーを作成します。 アプリケーションでは、この動作を利用して、一度に複数のキーを作成できます。 たとえば、アプリケーションでは、lpSubKey パラメーターに次の形式の文字列を指定することで、前の 3 つのサブキーと同時に 4 つのレベルの深さのサブキーを作成できます。

subkey1\subkey2\subkey3\subkey4

パス内の既存のキーのスペルが正しくない場合、この動作によって不要なキーが作成されることに注意してください。

アプリケーションは、HKEY_USERS または HKEY_LOCAL_MACHINEの直接の子であるキーを作成できません。 アプリケーションは、HKEY_USERS または HKEY_LOCAL_MACHINE ツリーの下位レベルでサブキーを作成できます。

手記

winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegCreateKeyTransacted を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

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

関連項目

RegCloseKey

RegDeleteKeyTransacted の

RegOpenKeyTransacted

RegSaveKey

レジストリ関数 を する

レジストリの概要

SECURITY_ATTRIBUTES