RegCreateKeyEx
The RegCreateKeyEx
function creates the specified key. If the key already exists in the registry,
the function opens it.
LONG RegCreateKeyEx(
HKEY hKey, |
// handle of an
open key |
LPCTSTR lpSubKey, |
// address of
subkey name |
DWORD Reserved, |
// reserved |
LPTSTR lpClass, |
// address of class
string |
DWORD dwOptions, |
// special options
flag |
REGSAM samDesired, |
// desired security
access |
LPSECURITY_ATTRIBUTES lpSecurityAttributes, |
// address of key
security structure |
PHKEY phkResult, |
// address of
buffer for opened handle |
LPDWORD lpdwDisposition |
// address of
disposition value buffer |
); |
|
Parameters
hKey
Identifies a
currently open key or any of the following predefined reserved handle values:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
The key opened or created by the RegCreateKeyEx function is a
subkey of the key identified by the hKey parameter.
lpSubKey
Points to a
null-terminated string specifying the name of a subkey that this function opens
or creates. The subkey specified must be a subkey of the key identified by the hKey
parameter. This subkey must not begin with the backslash character ( \ ). This
parameter cannot be NULL.
Reserved
Reserved;
must be zero.
lpClass
Points to a
null-terminated string that specifies the class (object type) of this key. This
parameter is ignored if the key already exists.
dwOptions
Specifies
special options for the key. This parameter can be one of the following values.
Value |
Meaning |
REG_OPTION_NON_VOLATILE |
This key is
not volatile; this is the default. The information is stored in a file and is
preserved when the system is restarted. The RegSaveKey |
REG_OPTION_VOLATILE |
Windows
NT: This key is volatile; the information
is stored in memory and is not preserved when the system is restarted. The RegSaveKey
function does not save volatile keys. This flag is ignored if the key already
exists. Windows
95: This value is ignored in
Windows 95. If REG_OPTION_VOLATILE is specified, the RegCreateKeyEx
function creates a nonvolatile key and returns ERROR_SUCCESS. |
REG_OPTION_BACKUP_RESTORE
|
Windows
NT: If this flag is set, the
function ignores the samDesired parameter and attempts to open the key
with the access required to backup or restore the key. If the calling thread
has the SE_BACKUP_NAME privilege enabled, the key is opened with
ACCESS_SYSTEM_SECURITY and KEY_READ access. If the calling thread has the
SE_RESTORE_NAME privilege enabled, the key is opened with ACCESS_SYSTEM_SECURITY
and KEY_WRITE access. If both privileges are enabled, the key has the
combined accesses for both privileges. Windows
95: This flag is ignored. Windows
95 does not support security in its registry. |
samDesired
Specifies an
access mask that specifies the desired security access for the new key. This
parameter can be a combination of the following values:
Value |
Meaning |
KEY_ALL_ACCESS |
Combination
of KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY,
KEY_CREATE_LINK, and KEY_SET_VALUE access. |
KEY_CREATE_LINK |
Permission
to create a symbolic link. |
KEY_CREATE_SUB_KEY |
Permission
to create subkeys. |
KEY_ENUMERATE_SUB_KEYS |
Permission
to enumerate subkeys. |
KEY_EXECUTE |
Permission
for read access. |
KEY_NOTIFY |
Permission
for change notification. |
KEY_QUERY_VALUE |
Permission
to query subkey data. |
KEY_READ |
Combination
of KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY access. |
KEY_SET_VALUE |
Permission
to set subkey data. |
KEY_WRITE |
Combination
of KEY_SET_VALUE and KEY_CREATE_SUB_KEY access. |
lpSecurityAttributes
Pointer to a SECURITY_ATTRIBUTES
Windows
NT: The lpSecurityDescriptor
member of the structure specifies a security descriptor for the new key. If lpSecurityAttributes
is NULL, the key gets a default security descriptor.
Windows
95: The lpSecurityDescriptor
member of the structure is ignored.
phkResult
Points to a
variable that receives the handle of the opened or created key.
lpdwDisposition
Points to a
variable that receives one of the following disposition values:
Value |
Meaning |
REG_CREATED_NEW_KEY |
The key did
not exist and was created. |
REG_OPENED_EXISTING_KEY |
The key
existed and was simply opened without being changed. |
Return Values
If the
function succeeds, the return value is ERROR_SUCCESS.
If the
function fails, the return value is a nonzero error code defined in WINERROR.H.
You can use the FormatMessage
Remarks
The key that
the RegCreateKeyEx function creates has no values. An application can
use the RegSetValue
The key
identified by the hKey parameter must have been opened with
KEY_CREATE_SUB_KEY access. To open the key, use the RegCreateKeyEx or RegOpenKeyEx
function.
An application
cannot create a key under HKEY_USERS or HKEY_LOCAL_MACHINE.
An
application can use RegCreateKeyEx to temporarily lock a portion of the
registry. When the locking process creates a new key, it receives the
disposition value REG_CREATED_NEW_KEY, indicating that it owns the lock.
Another process attempting to create the same key receives the disposition
value REG_OPENED_EXISTING_KEY, indicating that another process already owns the
lock.
See Also