パラメータ
hKey
現在開いている 1 つのキーのハンドルを指定する。
代わりに、あらかじめ定義されている次の予約済みハンドルのいずれかを指定することもできる。
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT/2000:HKEY_PERFORMANCE_DATA も指定できる。
Windows 95/98:HKEY_DYN_DATA も指定できる。
RegCreateKeyEx 関数を使って開いた、または作成したキーは、hKey
パラメータで指定するキーのサブキーである。
lpSubKey
開くべき、または作成するべきサブキーの名前を保持している、NULL で終わる文字列へのポインタを指定する。
このサブキーは、hKey パラメータで指定したキーのサブキーでなければならない。NULL を指定することはできない。
Windows NT/2000:lpSubKey
パラメータで指定するサブキーの名前の先頭に円記号(\)を記述してはならない。
先頭に円記号を記述すると、ERROR_BAD_PATHNAME が返る。
Windows 95/98:lpSubKey
パラメータで指定するサブキーの名前の先頭に円記号(\)を記述すると、その円記号は無視される。
Reserved
予約されている。0 を指定する。
lpClass
サブキーを新しく作成する際に、そのサブキーに割り当てられるクラス(オブジェクトタイプ)の名前を保持している、NULL
で終わる文字列
へのポインタを指定する。キーが既に存在する場合、このパラメータは無視される。現時点では、クラスはまったく定義されていない。
アプリケーションは NULL を指定するべきである。Windows 95 と Windows 98
は、リモートレジストリのキーを作成する場合にのみ、この
パラメータを使う。ローカルレジストリのキーを作成する場合は、このパラメータを無視する。Windows NT/2000 は、ローカルとリモートどちら
のレジストリのキーを作成する場合も、このパラメータをサポートしている。しかし、どちらにしても、現時点ではこのパラメータで NULL を指
定するべきである。
dwOptions
キーに関する特別なオプションを指定する。次の値のいずれかを指定する。
値
|
意味
|
REG_OPTION_NON_VOLATILE
|
このキーは不揮発性である。このフラグは、既定で指定される。情報はファイルに格納され、
システムを再起動時しても失われない。RegSaveKey 関数は、不揮発性のキーを保存する。
|
REG_OPTION_VOLATILE
|
Windows NT/2000:このキーは揮発性である。情報はメモリに格納され、このキーに対応する
レジストリハイブ(レジストリツリーのルート)をアンロードする際に保護されない。
たとえば、システムを再起動すると、HKEY_LOCAL_MACHINE レジストリハイブのアンロード
が発生する。RegLoadKey 関数を使ってロードされるレジストリハイブの場合、その関数に対応
する RegUnloadKey 関数を実行すると、レジストリハイブのアンロードが発生する。
RegSaveKey 関数は、揮発性のキーを保存しない。キーが既に存在する場合、このフラグは
無視される。
Windows 95:この値は無視される。REG_OPTION_VOLATILE を指定した場合でも、
RegCreateKeyEx 関数は不揮発性のキーを作成し、ERROR_SUCCESS を返す。
|
REG_OPTION_BACKUP_RESTORE
|
Windows NT/2000:このフラグを指定すると、この関数は samDesired パラメータを無視し、
キーをバックアップまたは復元するために必要なアクセス権を割り当てて、そのキーを開こうとす
る。呼び出し側のスレッドで SE_BACKUP_NAME 特権が有効になっている場合、
ACCESS_SYSTEM_SECURITY と KEY_READ の各アクセス権を割り当ててこのキーを開
く。呼び出し側のスレッドで SE_RESTORE_NAME 特権が有効になっている場合、
ACCESS_SYSTEM_SECURITY と KEY_WRITE の各アクセス権を割り当ててこのキーを開
く。両方の特権が有効になっている場合、両方の特権に対応するアクセス権を組み合わせて、
このキーを開く。
|
samDesired
キーに割り当てるべき、希望のアクセスマスクを指定する。次の値を組み合わせて指定する。
値
|
意味
|
KEY_CREATE_LINK |
シンボリックリンクの作成を許可する。 |
KEY_CREATE_SUB_KEY |
サブキーの作成を許可する。 |
KEY_ENUMERATE_SUB_KEYS |
サブキーの列挙を許可する。 |
KEY_EXECUTE |
読み取りアクセスを許可する。 |
KEY_NOTIFY |
変更の通知(キーに変更が加えられたときに、そのことを通知するよう要求)を許可する。 |
KEY_QUERY_VALUE |
サブキーのデータを問い合わせることを許可する。 |
KEY_SET_VALUE |
サブキーのデータを設定することを許可する。 |
KEY_ALL_ACCESS
|
KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY、
KEY_CREATE_SUB_KEY、KEY_CREATE_LINK、KEY_SET_VALUE の各アクセス権を
組み合わせ、さらに SYNCHRONIZE 以外の「standard access rights」(標準アクセス権)
のすべての権利を組み合わせたものである。
|
KEY_READ
|
STANDARD_RIGHTS_READ、KEY_QUERY_VALUE、
KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY の各アクセス権の組み合わせである。
|
KEY_WRITE
|
STANDARD_RIGHTS_WRITE、KEY_SET_VALUE、KEY_CREATE_SUB_KEY の各アク
セス権の組み合わせである。
|
lpSecurityAttributes
子プロセスが、取得したハンドルを継承できるかどうかを決定する、1 個の
SECURITY_ATTRIBUTES
構造体へのポインタを指定す
る。NULL を指定すると、そのハンドルを継承できない。
Windows NT/2000:SECURITY_ATTRIBUTES 構造体の lpSecurityDescriptor
メンバで、セキュリティ記述子を指定する。
このパラメータで NULL を指定すると既定のセキュリティ記述子をキーに割り当てる。
phkResult
1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、開いたまたは作成したキーのハンドルが格納される。
取得したハンドルが不要になった段階で、RegCloseKey 関数を呼び出して、そのハンドルを閉じること。
lpdwDisposition
1
個の変数へのポインタを指定する。関数から制御が返ると、この変数に、キーが存在していたかどうかを示す次の値のいずれかが格納さ
れる。
値
|
意味
|
REG_CREATED_NEW_KEY |
キーが存在していなかったため、新しく作成した。 |
REG_OPENED_EXISTING_KEY |
キーが存在しており、単純にそのキーを開いた。 |
NULL を指定すると、キーが存在していたかどうかを表す値は格納されない。
戻り値
関数が成功すると、ERROR_SUCCESS が返る。
関数が失敗すると、Winerror.h ヘッダーファイル内で定義されている、0 以外のエラーコードが返る。
FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage
関数を呼び出すと、エラーの一般的な説明を取得できる。
解説
RegCreateKeyEx
関数がキーを作成した段階では、その中にレジストリエントリが存在していない。レジストリエントリを作成するには、
RegSetValue 関数または RegSetValueEx 関数を使う。 |