Commit 0692d07f authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

ntdll: Look at CurrentMajor/MinorVersionNumber registry values before CurrentVersion.

parent 65a3e149
......@@ -276,18 +276,36 @@ static BOOL get_nt_registry_version( RTL_OSVERSIONINFOEXW *version )
memset( version, 0, sizeof(*version) );
RtlInitUnicodeString( &valueW, L"CurrentVersion" );
if (!NtQueryValueKey( hkey, &valueW, KeyValuePartialInformation, tmp, sizeof(tmp)-1, &count ))
RtlInitUnicodeString( &valueW, L"CurrentMajorVersionNumber" );
if (!NtQueryValueKey( hkey, &valueW, KeyValuePartialInformation, tmp, sizeof(tmp)-1, &count ) &&
info->Type == REG_DWORD)
{
WCHAR *p, *str = (WCHAR *)info->Data;
str[info->DataLength / sizeof(WCHAR)] = 0;
p = wcschr( str, '.' );
if (p)
version->dwMajorVersion = *(DWORD *)info->Data;
RtlInitUnicodeString( &valueW, L"CurrentMinorVersionNumber" );
if (!NtQueryValueKey( hkey, &valueW, KeyValuePartialInformation, tmp, sizeof(tmp)-1, &count ) &&
info->Type == REG_DWORD)
{
*p++ = 0;
version->dwMinorVersion = wcstoul( p, NULL, 10 );
version->dwMinorVersion = *(DWORD *)info->Data;
}
else version->dwMajorVersion = 0;
}
if (!version->dwMajorVersion)
{
RtlInitUnicodeString( &valueW, L"CurrentVersion" );
if (!NtQueryValueKey( hkey, &valueW, KeyValuePartialInformation, tmp, sizeof(tmp)-1, &count ))
{
WCHAR *p, *str = (WCHAR *)info->Data;
str[info->DataLength / sizeof(WCHAR)] = 0;
p = wcschr( str, '.' );
if (p)
{
*p++ = 0;
version->dwMinorVersion = wcstoul( p, NULL, 10 );
}
version->dwMajorVersion = wcstoul( str, NULL, 10 );
}
version->dwMajorVersion = wcstoul( str, NULL, 10 );
}
if (version->dwMajorVersion) /* we got the main version, now fetch the other fields */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment