RegCreateKeyA 函数 (winreg.h)
创建指定的注册表项。 如果该密钥已存在于注册表中,则函数将打开它。
语法
LSTATUS RegCreateKeyA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[out] PHKEY phkResult
);
参数
[in] hKey
打开的注册表项的句柄。 调用过程必须具有对密钥KEY_CREATE_SUB_KEY访问权限。 有关详细信息,请参阅 注册表项安全和访问权限。
根据注册表项的安全描述符检查密钥创建访问权限,而不是获取句柄时指定的访问掩码。 因此,即使 hKey 使用KEY_READ的 samDesired 打开,也可以在创建密钥的操作中使用(如果其安全描述符允许)。
此句柄由 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 参数指定以下格式的字符串,创建与上述三个子项相同的四个级别:
子项1\subkey2\subkey3\subkey4
请注意,如果路径中的现有密钥拼写错误,则此行为将导致创建不需要的密钥。
注意
winreg.h 标头将 RegCreateKey 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winreg.h (包括 Windows.h) |
库 | Advapi32.lib |
DLL | Advapi32.dll |