RegCreateKeyEx

【勇芳软件工作室】汉化HomePreviousNext

RegCreateKeyEx函数创建指定的键。如果密钥已经存在于注册表中,则该函数将打开它。

LONG RegCreateKeyEx

HKEY 【的hKeyru-Latn】,//处理一个开放的密钥
LPCTSTR 【lpSubKey】,//子项名称的地址
DWORD 【保留的】,//保留
LPTSTR 【lpClass】,//类字符串的地址
DWORD 【dwOptions】,//特殊选项标志
REGSAM 【Sndesired】,//所需的安全访问
LPSECURITY_ATTRIBUTES 【lpSecurityAttributes】,//关键安全结构的地址
PHKEY 【phkResultnl】,//打开句柄缓冲区的地址
LPDWORD 【lpdwDisposition】//处置值缓冲区的地址
); 

参数

【的hKeyru-Latn】

标识当前打开的键或任何以下预定义保留句柄值:

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

RegCreateKeyEx功能打开或创建的密钥是由【的hKeyru-Latn】参数标识的密钥的子项。

【lpSubKey】

指向一个以null结束的字符串,指定此函数打开或创建的子项的名称。指定的子项必须是由【的hKeyru-Latn】参数标识的键的子项。该子项不能以反斜杠字符('\\')开头。此参数不能为NULL。

【保留的】

Reserved; must be zero.

【lpClass】

指向指定此键的类(对象类型)的以null结尾的字符串。如果密钥已经存在,则忽略该参数。

【dwOptions】

指定键的特殊选项。此参数可以是以下值之一。

含义
REG_OPTION_NON_VOLATILE这个关键是不挥发的;这是默认值。信息存储在文件中,并在系统重新启动时保留。RegSaveKey功能可以保存不易变化的键。
REG_OPTION_VOLATILEWindows NT:这个键是不稳定的信息存储在内存中,并且在重新启动系统时不会被保留。RegSaveKey功能不保存挥发性键。如果密钥已经存在,则忽略该标志。

Windows 95:该值在Windows 95中被忽略。如果指定了REG_OPTION_VOLATILE,则RegCreateKeyEx函数创建一个非易失性密钥,并返回ERROR_SUCCESS。

REG_OPTION_BACKUP_RESTOREWindows NT:如果设置了此标志,该函数将忽略【Sndesired】参数,并尝试使用所需的访问权限来打开该密钥以备份或还原密钥。如果调用线程启用了SE_BACKUP_NAME特权,则使用ACCESS_SYSTEM_SECURITY和KEY_READ访问来打开该键。如果调用线程启用了SE_RESTORE_NAME特权,则使用ACCESS_SYSTEM_SECURITY和KEY_WRITE访问来打开该键。如果启用了两个权限,则密钥具有两个权限的组合访问。

Windows 95:此标志被忽略。Windows 95不支持其注册表中的安全性。


【Sndesired】

指定一个访问掩码,指定新密钥的所需安全访问。此参数可以是以下值的组合:

含义
KEY_ALL_ACCESS组合KEY_QUERY_VALUE,KEY_ENUMERATE_SUB_KEYS,KEY_NOTIFY,KEY_CREATE_SUB_KEY,KEY_CREATE_LINK和KEY_SET_VALUE访问。
KEY_CREATE_LINK创建符号链接的权限。
KEY_CREATE_SUB_KEY创建子项的权限。
KEY_ENUMERATE_SUB_KEYS枚举子项的权限。
KEY_EXECUTE读访问权限
KEY_NOTIFY许可变更通知。
KEY_QUERY_VALUE查询子密钥数据的权限。
KEY_READ组合KEY_QUERY_VALUE,KEY_ENUMERATE_SUB_KEYS和KEY_NOTIFY访问。
KEY_SET_VALUE设置子密钥数据的权限。
KEY_WRITE组合KEY_SET_VALUE和KEY_CREATE_SUB_KEY访问。

【lpSecurityAttributes】

指向SECURITY_ATTRIBUTES结构的指针,用于确定返回的句柄是否可以由子进程继承。如果【lpSecurityAttributes】为NULL,则无法继承该句柄。

Windows NT:结构的lpSecurityDescriptor成员指定新密钥的安全描述符。如果【lpSecurityAttributes】为NULL,则该密钥将获取默认安全描述符。

Windows 95:结构的lpSecurityDescriptor成员将被忽略。

【phkResultnl】

指向接收打开或创建的键的句柄的变量。

【lpdwDisposition】

指向接收以下处理值之一的变量:

含义
REG_CREATED_NEW_KEY关键是不存在并被创建。
REG_OPENED_EXISTING_KEY关键存在,只是打开而不改变。

返回值

如果函数成功,则返回值为ERROR_SUCCESS。

如果函数失败,返回值是在WINERROR.H中定义的非零错误代码。您可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标志的FormatMessage函数来获取错误的一般描述。

备注

RegCreateKeyEx函数创建的关键是没有值。应用程序可以使用RegSetValueRegSetValueEx功能设置键值。

必须使用KEY_CREATE_SUB_KEY访问权限打开【的hKeyru-Latn】参数所标识的密钥。要打开该键,请使用RegCreateKeyExRegOpenKeyEx功能。

应用程序无法在HKEY_USERS或HKEY_LOCAL_MACHINE下创建密钥。

应用程序可以使用RegCreateKeyEx临时锁定注册表的一部分。当锁定过程创建一个新密钥时,它接收到处理值REG_CREATED_NEW_KEY,表示它“拥有”锁定。尝试创建相同密钥的另一个进程接收到处理值REG_OPENED_EXISTING_KEY,表示另一进程已拥有该锁。

也可以看看

RegCloseKey, RegCreateKey, RegDeleteKey, RegOpenKey, RegOpenKeyEx, RegSaveKey, SECURITY_ATTRIBUTES