RtlOpenCurrentUser
NTSTATUS __stdcall RtlOpenCurrentUser(UINT64 DesiredAccess, VOID **CurrentUserKey){
unsigned int v2;
int v4;
INT64 v5;
INT64 v7;
_UNICODE_STRING CurrentUserKeyPath;
_OBJECT_ATTRIBUTES ObjectAttributes;
v2 = DesiredAccess;
CurrentUserKeyPath = 0i64;
memset(&ObjectAttributes, 0, sizeof(ObjectAttributes));
v4 = RtlFormatCurrentUserKeyPath(&CurrentUserKeyPath);
if( v4 >= 0 )
{
ObjectAttributes.ObjectName = &CurrentUserKeyPath;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 1600;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
v4 = ZwOpenKey(
CurrentUserKey,
v2,
&ObjectAttributes,
v5,
*(INT64 *)&CurrentUserKeyPath.Length,
(INT64)CurrentUserKeyPath.Buffer,
*(INT64 *)&ObjectAttributes.Length,
0i64);
RtlFreeAnsiString(&CurrentUserKeyPath);
}
if( v4 == -1073741772 )
{
RtlInitUnicodeString(&CurrentUserKeyPath, L"\\Registry\\User\\.Default");
ObjectAttributes.ObjectName = &CurrentUserKeyPath;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 1600;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
return ZwOpenKey(
CurrentUserKey,
v2,
&ObjectAttributes,
v7,
*(INT64 *)&CurrentUserKeyPath.Length,
(INT64)CurrentUserKeyPath.Buffer,
*(INT64 *)&ObjectAttributes.Length,
0i64);
}
return v4;
}Referenced by:
OpenGlobalizationUserSettingsKey