RtlWriteRegistryValue function (wdm.h)

The RtlWriteRegistryValue routine writes caller-supplied data into the registry along the specified relative path at the given value name.

Syntax

NTSYSAPI NTSTATUS RtlWriteRegistryValue(
  [in]           ULONG  RelativeTo,
  [in]           PCWSTR Path,
  [in]           PCWSTR ValueName,
  [in]           ULONG  ValueType,
  [in, optional] PVOID  ValueData,
  [in]           ULONG  ValueLength
);

Parameters

[in] RelativeTo

Specifies whether Path is an absolute registry path or is relative to a predefined path as one of the following.

Value Meaning
RTL_REGISTRY_ABSOLUTE Path is an absolute registry path.
RTL_REGISTRY_SERVICES Path is relative to \Registry\Machine\System\CurrentControlSet\Services.
RTL_REGISTRY_CONTROL Path is relative to \Registry\Machine\System\CurrentControlSet\Control.
RTL_REGISTRY_WINDOWS_NT Path is relative to \Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion.
RTL_REGISTRY_DEVICEMAP Path is relative to \Registry\Machine\Hardware\DeviceMap.
RTL_REGISTRY_USER Path is relative to \Registry\User\CurrentUser. (For a system process, this is \Users\.Default.)
RTL_REGISTRY_OPTIONAL Specifies that the key referenced by this parameter and the Path parameter are optional.
RTL_REGISTRY_HANDLE Specifies that the Path parameter is actually a registry handle to use. This value is optional.

[in] Path

Pointer to either an absolute registry path or a path relative to the known location specified by the RelativeTo parameter. If the RTL_REGISTRY_HANDLE flag is specified, this parameter is a registry handle for an already opened key to be used directly.

[in] ValueName

Pointer to the name of a subkey or value entry to be written into the registry.

[in] ValueType

Specifies a REG_XXX value that determines the type of the ValueName parameter. For a list of the possible values, see the Type parameter of ZwSetValueKey.

[in, optional] ValueData

Pointer to the name of a subkey or values for its value entries (or both) to be written into the registry.

[in] ValueLength

Specifies the number of bytes of ValueData to be written into the registry.

Return value

RtlWriteRegistryValue returns the status of the operation, either STATUS_SUCCESS or an error status.

Remarks

If the specified key does not exist, the routine attempts to create the key. For this attempt to succeed, the new key must be a direct subkey of the key that is referred to by the Path parameter, and the key that Path refers to must have been opened for KEY_CREATE_SUB_KEY access.

Requirements

Requirement Value
Minimum supported client Available starting with Windows 2000.
Target Platform Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

See also

RtlCheckRegistryKey

RtlCreateRegistryKey

RtlDeleteRegistryValue

RtlQueryRegistryValues

ZwCreateKey

ZwOpenKey

ZwSetValueKey