指定されたレジストリキーを作成します。指定されたレジストリキーがすでに存在している場合は、キーをオープンします。
LONG RegCreateKeyExA( HKEY hKey, // キーのハンドル PCTSTR pszSubKey, // サブキーの名前 DWORD Reserved, // 予約(0を指定) PTSTR pszClass, // クラス名 DWORD dwOptions, // オプション REGSAM samDesired, // セキュリティアクセスマスク PSECURITY_ATTRIBUTES psa, // セキュリティ属性 PHKEY phkResult, // ハンドルを格納する変数 PDWORD pdwDisposition );
ADVAPI32.DLL
現在オープンされているキーのハンドルを指定します。このハンドルは 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 |
作成されるキーはこのパラメータで指定されたキーのサブキーになります。
作成またはオープンするサブキーの名前を表す文字列のアドレスを指定します。 0 (NULL) を指定することはできません。
Windows NT/2000/XP: サブキーの名前をバックスラッシュ「\」で始めてはいけません。このような名前を指定した場合は、関数は 161 (ERROR_BAD_PATHNAME) を返します。
Windows 95/98/Me: サブキーの名前がバックスラッシュ「\」で始まっている場合は、先頭のバックスラッシュは無視されます。
予約されています。 0 を指定しなければなりません。
このキーのクラス (オブジェクトの種類) の名前を表す文字列のアドレスを指定します。キーがすでに存在する場合は無視されます。現在はどのようなクラスも定義されていないため、このパラメータには 0 (NULL) を指定するべきです。
Windows 95/98/Me: このパラメータはリモートレジストリキーに対してのみ使用され、ローカルレジストリキーでは無視されます。
Windows NT/2000/XP: このパラメータはリモートレジストリキーとローカルレジストリキーの両方でサポートされます。
キーに関する特別なオプションを指定します。以下の値のいずれかを指定します。
値 | 意味 |
---|---|
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: この値は無視されます。 |
オープンするキーのハンドルのセキュリティアクセス権を示すアクセスマスクを指定します。以下の値の組み合わせで指定します。
値 | 意味 |
---|---|
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 アクセスの組み合わせです。 |
取得したハンドルの子プロセスへの継承を許可するかどうかを決める、 SECURITY_ATTRIBUTES 構造体へのポインタを指定します。 0 (NULL) を指定すると、ハンドルは継承されません。
Windows 95/98/Me: この構造体の lpSecurityDescriptor メンバは、新しく作成されるキーのセキュリティデスクリプタを指定します。 psa メンバに 0 (NULL) を指定した場合は、デフォルトのセキュリティデスクリプタが指定されます。
作成またはオープンされたキーのハンドルを格納するための変数のアドレスを指定します。
この変数に返されたハンドルが必要なくなったら、 RegCloseKey 関数を呼び出してハンドルをクローズしなくてはいけません。
キーが新しく作成されたかどうかを示す値を格納する変数のアドレスを指定します。この変数には以下の値のいずれかが格納されます。
値 | 意味 |
---|---|
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 以降