RegCreateKeyEx

機能
指定のキーを作成する、キーが存在する場合はそのキーをオープンする
Declare Function RegCreateKeyEx Lib "ADVAPI32.dll" alias "RegCreateKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
ByVal lpClass As String, ByVal dwOptions As Long, _
ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
phkResult As Long, lpdwDisposition As Long) As Long
Declare Function RegCreateKeyEx Lib "ADVAPI32.dll" alias "RegCreateKeyExA" _
(ByVal hKey As Integer, ByVal lpSubKey As String, ByVal Reserved As Integer, _
ByVal lpClass As String, ByVal dwOptions As Integer, _
ByVal samDesired As Integer, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
phkResult As Integer, lpdwDisposition As Integer) As Integer

LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
引数
hKey

オープンするキー
HKEY_CLASS_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_DYN_DATA
HKEY_LOCAL_MACHINE
HKEY_USERS
lpSubKey
作成 or オープンするサブキー名
Reserved
常に0
lpClass
クラス(オブジェクトタイプ)を指定する文字列
(使わないときvbNullString)
dwOptions
オプション設定を指定する定数
samDesired
動作方法を指定する定数
lpSecurityAttributes
セキュリティ属性を設定するSECURITY_ATTRIBUTES構造体
設定しないときは ByVal lpSecurityAttributes As Longと
宣言して0を設定する
phkResult
(戻り値)新規作成 or オープンされたキーのIDを受け取る長整数変数
lpdwDisposition
(戻り値)処理の結果を受け取る長整数変数
戻り値
正常終了のとき      ERROR_SUCCESS(=0)
エラーのとき        0以外
備考
この関数を使用して作成したキーには何も設定されない。
値を設定する場合にはRegSetValueEx()関数を使用する。
キーを新規作成して戻り値がREG_CREATED_NEW_KEYのとき
作成したキーは一時的にロックされ、別のプロセスが
同じキーを作成しようとするとREG_OPENED_EXISTINGが戻る。
サンプル
ダウンロード(RegCreateKeyEx.lzh 2.79KB)

dwOptionsの定数
REG_OPTION_NON_VOLATILE = 0                   設定内容をレジストリファイルに保存する
REG_OPTIONS_VOLATILE = 1                      (この定数はWindows9x系では無効)
REG_OPTIONS_BACKUP_RESTORE = 4                (同上)
samDesiredの定数

KEY_CREATE_SUB_KEY = &H4                      サブキーを作成する
KEY_ENUMERATE_SUB_KEYS = &H8                  サブキーをリストアップする
KEY_EXEBUTE = ((KEY_READ) And (Not SYNCHRONIZE))
KEY_NOTIFY = &H10                             レジストリの内容変更通知を要求する
KEY_QUERY_VALUE = &H1                         レジストリの値を取得する
KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or _
                 KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
                 (Not SYNCHRONIZE))
KEY_SET_VALUE = &H2                           レジストリの値を設定する
KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or _
                 KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or _
                 KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
                 KEY_ENUMRATE_SUB_KEYS Or KEY_NOTIFY Or _
                 KEY_CREATE_LINK) And (Not SYNCHRONIZE))
lpdwDispositionの定数
REG_CREATED_NEW_KEY = &H1                      キーを新規作成
REG_OPENED_EXISTING_KEY = &H2                  既存キーをオープンする