RegCreateKeyEx(A)

指定されたレジストリキーを作成します。指定されたレジストリキーがすでに存在している場合は、キーをオープンします。

LONG RegCreateKeyExA(
    HKEY    hKey,             // キーのハンドル
    PCTSTR  pszSubKey,        // サブキーの名前
    DWORD   Reserved,         // 予約(0を指定)
    PTSTR   pszClass,         // クラス名
    DWORD   dwOptions,        // オプション
    REGSAM  samDesired,       // セキュリティアクセスマスク
    PSECURITY_ATTRIBUTES psa, // セキュリティ属性
    PHKEY   phkResult,        // ハンドルを格納する変数
    PDWORD  pdwDisposition
);

ADVAPI32.DLL

引数

hKey

現在オープンされているキーのハンドルを指定します。このハンドルは KEY_CREATE_SUB_KEY アクセスを持っていなければなりません。

次の定義済みキーを指定することもできます。

定義済みキー
0x80000000 HKEY_CLASSES_ROOT
0x80000001 HKEY_CURRENT_USER
0x80000002 HKEY_LOCAL_MACHINE
0x80000003 HKEY_USERS
0x80000004 Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
0x80000005 HKEY_CURRENT_CONFIG
0x80000006 Windows 95/98/Me: HKEY_DYN_DATA

作成されるキーはこのパラメータで指定されたキーのサブキーになります。

pszSubKey

作成またはオープンするサブキーの名前を表す文字列のアドレスを指定します。 0 (NULL) を指定することはできません。

Windows NT/2000/XP: サブキーの名前をバックスラッシュ「\」で始めてはいけません。このような名前を指定した場合は、関数は 161 (ERROR_BAD_PATHNAME) を返します。

Windows 95/98/Me: サブキーの名前がバックスラッシュ「\」で始まっている場合は、先頭のバックスラッシュは無視されます。

Reserved

予約されています。 0 を指定しなければなりません。

pszClass

このキーのクラス (オブジェクトの種類) の名前を表す文字列のアドレスを指定します。キーがすでに存在する場合は無視されます。現在はどのようなクラスも定義されていないため、このパラメータには 0 (NULL) を指定するべきです。

Windows 95/98/Me: このパラメータはリモートレジストリキーに対してのみ使用され、ローカルレジストリキーでは無視されます。

Windows NT/2000/XP: このパラメータはリモートレジストリキーとローカルレジストリキーの両方でサポートされます。

dwOptions

キーに関する特別なオプションを指定します。以下の値のいずれかを指定します。

意味
0x00000000(REG_OPTION_NON_VOLATILE)

このキーは不揮発性です。情報はディスクファイルに保存され、システムを再起動時しても情報は失われません。

0x00000001 (REG_OPTION_VOLATILE)

Windows NT/2000/XP: このキーは揮発性です。情報はメモリに格納され、ディスクファイルには保存されないため、システムを再起動すると失われます。指定された名前のキーがすでに存在する場合は、このフラグは無視されます。

Windows 95/98/Me: この値は無視されます。この値が指定された場合は、不揮発性のキーが作成されます。

0x00000004 (REG_OPTION_BACKUP_RESTORE)

Windows NT/2000/XP: samDesired パラメータのアクセス指定を無視して、キーのバックアップまたは復元に必要なアクセス要求とともにキーをオープンします。呼び出し側のスレッドが SE_BACKUP_NAME 特権を持っている場合、このキーは、ACCESS_SYSTEM_SECURITY アクセスと KEY_READ アクセスでオープンされます。呼び出し側のスレッドが SE_RESTORE_NAME 特権を持っている場合、このキーは、ACCESS_SYSTEM_SECURITY アクセスと KEY_WRITE アクセスでオープンされます。両方の特権を持っている場合、両方の特権が組み合わさります。

Windows 95/98/Me: この値は無視されます。

samDesired

オープンするキーのハンドルのセキュリティアクセス権を示すアクセスマスクを指定します。以下の値の組み合わせで指定します。

意味
0x0001 (KEY_QUERY_VALUE)

サブキーデータの問い合わせを許可します。

0x0002 (KEY_SET_VALUE)

サブキーデータの設定を許可します。

0x0004 (KEY_CREATE_SUB_KEY)

サブキーの作成を許可します。

0x0008 (KEY_ENUMERATE_SUB_KEYS)

サブキーの列挙を許可します。

0x0010 (KEY_NOTIFY)

変更の通知を許可します。

0x0020 (KEY_CREATE_LINK)

シンボリックリンクの作成を許可します。

0x0100 (KEY_WOW64_64KEY)

Windows XP: 64 ビットまたは 32 ビットアプリケーションが、 64 ビットキーをオープンできるようにします。

0x0200 (KEY_WOW64_32KEY)

Windows XP: 64 ビットまたは 32 ビットアプリケーションが、 32 ビットキーをオープンできるようにします。

0x20006 (KEY_WRITE)

STANDARD_RIGHTS_WRITE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY アクセスの組み合わせです。

0x20019 (KEY_READ, KEY_EXECUTE)

STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY アクセスの組み合わせです。

0xF003F (KEY_ALL_ACCESS)

STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, KEY_SET_VALUE アクセスの組み合わせです。

psa

取得したハンドルの子プロセスへの継承を許可するかどうかを決める、 SECURITY_ATTRIBUTES 構造体へのポインタを指定します。 0 (NULL) を指定すると、ハンドルは継承されません。

Windows 95/98/Me: この構造体の lpSecurityDescriptor メンバは、新しく作成されるキーのセキュリティデスクリプタを指定します。 psa メンバに 0 (NULL) を指定した場合は、デフォルトのセキュリティデスクリプタが指定されます。

phkResult

作成またはオープンされたキーのハンドルを格納するための変数のアドレスを指定します。

この変数に返されたハンドルが必要なくなったら、 RegCloseKey 関数を呼び出してハンドルをクローズしなくてはいけません。

pdwDisposition

キーが新しく作成されたかどうかを示す値を格納する変数のアドレスを指定します。この変数には以下の値のいずれかが格納されます。

意味
0x00000001 (KEY_QUERY_VALUE)

指定されたキーが存在しなかったため、キーが新しく作成されたことを示します。

0x00000002 (REG_OPENED_EXISTING_KEY)

指定されたキーが既に存在しており、そのキーがオープンたことを示します。

このパラメータに 0 (NULL) を指定した場合は、この情報は返されません。

戻り値

成功すると 0 (ERROR_SUCCESS) が返ります。

失敗すると 0 以外のエラーコードが返ります。このエラーコードと FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage 関数を呼び出すことで、エラーメッセージを取得できます。

解説

作成されたキーは値を持ちません。値を設定するには、 RegSetValueEx 関数を使います。

Windows 95/98/Me: レジストリのサブキーや値の名前は、 255 文字を超えることはできません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降