CmpSetSystemRegistryString
INT64 __stdcall CmpSetSystemRegistryString(HANDLE KeyHandle, PUNICODE_STRING ValueName){
INT64 v2;
wchar_t *Buffer;
BOOL UnicodeStringFromAsciiz;
unsigned int v7;
UINT64 DataSize;
_UNICODE_STRING UnicodeString;
*(_QWORD *)&UnicodeString.Length = 0i64;
Buffer = 0i64;
UnicodeString.Buffer = 0i64;
if( v2 )
{
UnicodeStringFromAsciiz = RtlCreateUnicodeStringFromAsciiz((INT64)&UnicodeString, v2);
Buffer = UnicodeString.Buffer;
if( UnicodeStringFromAsciiz )
{
LODWORD(DataSize) = UnicodeString.Length + 2;
v7 = ZwSetValueKey(KeyHandle, ValueName, 0i64, 1ui64, UnicodeString.Buffer, DataSize);
}
else
{
v7 = -1073741823;
}
}
else
{
v7 = ZwDeleteValueKey(KeyHandle, ValueName, 0i64);
if( v7 != -1073741772 )
return v7;
v7 = 0;
}
if( Buffer )
RtlFreeAnsiString(&UnicodeString);
return v7;
}Referenced by:
CmpSetSystemValues