RtlWriteRegistryValue

NTSTATUS __stdcall RtlWriteRegistryValue(
        UINT64 RelativeTo,
        const WCHAR *Path,
        const WCHAR *ValueName,
        UINT64 ValueType,
        VOID *ValueData,
        UINT64 ValueLength){
  int v6; 
  int v8; 
  NTSTATUS result; 
  NTSTATUS v10; 
  UINT64 DataSize; 
  VOID *KeyHandle; 
  _UNICODE_STRING DestinationString[2]; 

  KeyHandle = 0i64;
  v6 = ValueType;
  DestinationString[0] = 0i64;
  v8 = RelativeTo;
  result = RtlpGetRegistryHandle(RelativeTo, Path, 1u, &KeyHandle);
  if( result >= 0 )
  {
    RtlInitUnicodeString(DestinationString, ValueName);
    LODWORD(DataSize) = ValueLength;
    v10 = ZwSetValueKey(KeyHandle, DestinationString, 0i64, v6 & 0xFFFFFF, ValueData, DataSize);
    if( (v8 & 0x40000000) == 0 )
      ZwClose((_HANDLE)KeyHandle);
    return v10;
  }
  return result;
}

Referenced by:

EtwStartAutoLogger
EtwpEnableAutoLoggerProvider
EtwpEnumerateAutologgerPath
EtwpEnumerateKeyProviders
ExpWriteSiloTimeZoneMarker
KseKPSOHookDriverTargeted
PerfDiagpSaveActiveDCLLogFileName
RtlSetActiveTimeBias
RtlSetPortableOperatingSystem
RtlpSetTimeZoneInformationWorker
RtlpUpdateDynamicTimeZones
WheapCommitPolicy
WmipSaveGuidSecurityDescriptor