RegCreateKeyW 函数 (winreg.h)

创建指定的注册表项。 如果注册表项已存在于注册表中,则函数将打开它。

注意 提供此函数只是为了与 16 位版本的 Windows 兼容。 应用程序应使用 RegCreateKeyEx 函数。 但是,备份或还原系统状态(包括系统文件和注册表配置单元)的应用程序应使用 卷影复制服务 而不是注册表功能。
 

语法

LSTATUS RegCreateKeyW(
  [in]           HKEY    hKey,
  [in, optional] LPCWSTR lpSubKey,
  [out]          PHKEY   phkResult
);

参数

[in] hKey

打开的注册表项的句柄。 调用进程必须具有对密钥KEY_CREATE_SUB_KEY访问权限。 有关详细信息,请参阅 注册表项安全和访问权限

根据注册表项的安全描述符(而不是获取句柄时指定的访问掩码)检查密钥创建访问权限。 因此,即使 hKey 是使用KEY_READ的 samDesir 打开的,它也可以用于创建密钥的操作(如果安全描述符允许)。

此句柄由 RegCreateKeyExRegOpenKeyEx 函数返回,也可以是以下 预定义键之一:

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_USERSHKEY_LOCAL_MACHINE的直接子级的密钥。 应用程序可以在 较低级别的HKEY_USERSHKEY_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

另请参阅

RegCloseKey

RegCreateKeyEx

RegDeleteKey

RegOpenKeyEx

注册表函数

注册表概述