IRegistryKey::SetValueKey 方法 (portcls.h)

方法 SetValueKey 替换或创建打开键下的值条目。

语法

NTSTATUS SetValueKey(
  [in, optional] PUNICODE_STRING ValueName,
  [in]           ULONG           Type,
  [in]           PVOID           Data,
  [in]           ULONG           DataSize
);

参数

[in, optional] ValueName

指向包含要设置的值项的名称的字符串的指针。 名称字符串由 UNICODE_STRING 类型的结构指定。 如果值条目没有名称,请将此参数设置为 NULL。 如果调用方指定名称字符串,但给定名称相对于其包含键不是唯一的,则 方法将替换现有值条目的数据。

[in] Type

指定要为 ValueName 写入的数据类型。 将此参数设置为以下系统定义的类型之一:

REG_BINARY

REG_DWORD

REG_DWORD_LITTLE_ENDIAN

REG_DWORD_BIG_ENDIAN

REG_EXPAND_SZ

REG_LINK

REG_MULTI_SZ

REG_NONE

REG_SZ

REG_RESOURCE_LIST

REG_RESOURCE_REQUIREMENTS_LIST

REG_FULL_RESOURCE_DESCRIPTOR

ZwSetValueKey 中介绍了这些参数类型。

[in] Data

指向包含数据的缓冲区的指针。 此参数指向用户提供的适合函数的结构或值。

[in] DataSize

指定 数据的大小(以字节为单位)。 此参数指定方法将从 Data 指向的缓冲区复制 的数据 字节数。

返回值

SetValueKey 如果调用成功设置指定的值键,则返回STATUS_SUCCESS。 否则,该方法将返回相应的错误代码。 下表显示了一些可能的返回状态代码。

返回代码 说明
STATUS_INVALID_PARAMETER
指示传递给 方法的参数之一无效。
STATUS_OBJECT_NAME_NOT_FOUND
指示方法找不到命名值键。

注解

如果给定键没有与给定 ValueName 匹配的名称的现有值条目, SetValueKey 则创建一个具有给定名称的新值条目。 如果存在匹配的值条目名称,则此例程将覆盖给定 ValueName 的原始值项。 因此, SetValueKey 保留任何特定键的每个值条目的唯一名称。 虽然每个值项名称对于其包含项必须是唯一的,但注册表中的许多不同键可以具有具有相同名称的值项。

要求

要求
目标平台 通用
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

IRegistryKey

UNICODE_STRING

ZwSetValueKey