RegCreateKeyA 函数 (winreg.h)
创建指定的注册表项。 如果注册表项已存在于注册表中,则函数将打开它。
语法
LSTATUS RegCreateKeyA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[out] PHKEY phkResult
);
参数
[in] hKey
打开的注册表项的句柄。 调用进程必须具有对密钥KEY_CREATE_SUB_KEY访问权限。 有关详细信息,请参阅 注册表项安全和访问权限。
针对注册表项的安全描述符(而不是获取句柄时指定的访问掩码)检查密钥创建的访问权限。 因此,即使 hKey 是使用 KEY_READ 的 samDesir 打开的,它也可用于创建密钥的操作(如果安全描述符允许)。
此句柄由 RegCreateKeyEx 或 RegOpenKeyEx 函数返回,也可以是以下 预定义键之一:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
[in, optional] lpSubKey
此函数打开或创建的密钥的名称。 此键必须是 由 hKey 参数标识的密钥的子项。
有关键名称的详细信息,请参阅 注册表的结构。
如果 hKey 是预定义键之一, lpSubKey 可能为 NULL。 在这种情况下, phkResult 接收传递给函数的相同 hKey 句柄。
[out] phkResult
一个变量的指针,此变量指向已打开或已创建的项的句柄。 如果该键不是预定义的注册表项之一,请在使用完句柄后调用 RegCloseKey 函数。
返回值
如果函数成功,则返回值为 ERROR_SUCCESS。
如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。 可以将 FormatMessage 函数与 FORMAT_MESSAGE_FROM_SYSTEM 标志一起使用,以获取错误的泛型说明。
注解
应用程序无法创建作为 HKEY_USERS 或 HKEY_LOCAL_MACHINE的直接子级的密钥。 应用程序可以在 较低级别的HKEY_USERS 或 HKEY_LOCAL_MACHINE 树中创建子项。
如果服务或应用程序模拟不同的用户,请不要将此函数与 HKEY_CURRENT_USER一起使用。 请改为调用 RegOpenCurrentUser 函数。
RegCreateKey 函数在指定路径中创建所有缺失的键。 应用程序可以利用此行为一次创建多个密钥。 例如,应用程序可以通过为 lpSubKey 参数指定以下格式的字符串,创建与前面的三个子项同时深四个级别的子项:
subkey1\subkey2\subkey3\subkey4
请注意,如果路径中的现有键拼写错误,则此行为将导致创建不需要的密钥。
注意
winreg.h 标头将 RegCreateKey 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winreg.h (包括 Windows.h) |
Library | Advapi32.lib |
DLL | Advapi32.dll |