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

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

返回值

如果调用成功设置指定的值键,则 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