IRegistryKey::NewSubKey 方法(portcls.h)

NewSubKey 方法创建一个新的注册表子项,或者打开由 IRegistryKey 对象表示的键下的现有子项。

语法

NTSTATUS NewSubKey(
  [out]           IRegistryKey    **RegistrySubKey,
  [in]            PUNKNOWN        OuterUnknown,
  [in]            ACCESS_MASK     DesiredAccess,
  [in]            PUNICODE_STRING SubKeyName,
  [in]            ULONG           CreateOptions,
  [out, optional] PULONG          Disposition
);

参数

[out] RegistrySubKey

新子项的输出指针。 此参数指向调用方分配的指针变量,该方法将指针写入到新的 IRegistryKey 对象。 此对象表示正在打开或创建的子项。 为此参数指定有效的非NULL 指针值。

[in] OuterUnknown

指向需要聚合注册表项对象的对象的 IUnknown 接口的指针。 此参数是可选的。 如果不需要聚合,请将此参数指定为 NULL

[in] DesiredAccess

指定调用方对要打开或创建的子项所需的访问类型。 此参数的类型为 ACCESS_MASK。 有关详细信息,请参阅以下“备注”部分。

[in] SubKeyName

指向要分配给子项的名称的指针。 此参数必须是一个有效的非NULL 指针,指向 UNICODE_STRING类型的初始化结构。

[in] CreateOptions

指示创建选项的标志。 如果需要,可以为零。 如果 RegistryKeyType 的值 GeneralRegistryKey,则此参数是必需的;否则,该方法不使用此参数。 有关详细信息,请参阅以下“备注”部分。

[out, optional] Disposition

处置值的输出指针。 此参数指向调用方分配的 ULONG 变量,该方法将写入一个状态值,该值指示是创建新密钥还是打开现有密钥。 此参数是可选的,如果调用方不需要此参数,则可以指定为 NULL。 有关详细信息,请参阅以下“备注”部分。

返回值

如果调用成功通过 RegistrySubKey 参数输出有效的 IRegistryKey 指针,则 NewSubKey 返回STATUS_SUCCESS。 否则,该方法将返回适当的错误代码。

言论

如果 NewSubKey 方法已存在,则打开指定的注册表项,或者在注册表中创建新密钥(如果不存在)。 该方法通过 RegistrySubKey 参数输出指向新键的 IRegistryKey 接口的指针。 该方法还通过可选的 Disposition 参数输出状态值,以指示密钥是打开还是已创建。

DesiredAccessCreateOptionsDisposition 参数对 PcNewRegistryKey 调用中具有相同名称的参数定义的值。

DesiredAccess 参数 是一个访问控制掩码,它指定调用方在通过 RegistrySubKey 对象访问子项时所需的访问控制类型。 不应将此掩码与控制用户对注册表子项的访问的 ACL(访问控制列表)混淆。 当 PcNewRegistryKey 函数或 IPort::NewRegistryKey 方法创建 GeneralRegistryKey类型的注册表项时,ObjectAttributes 参数指定密钥的属性,包括包含 ACL 的安全描述符。 但是,当 NewSubKey 方法创建新的注册表子项时,该子项只是从其父键继承 ACL。 NewSubKey 方法无法指定不同于父键的 ACL。

RegistrySubKeyOuterUnknown 参数遵循 COM 对象的 引用计数约定

要求

要求 价值
目标平台 普遍
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

ACCESS_MASK

IPort::NewRegistryKey

IRegistryKey

PcNewRegistryKey

UNICODE_STRING