Why not use the manifest workaround?

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application> 
         *  <!-- Windows 8.1 -->
         *  <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>

Raul

On Oct 20, 2013, at 4:56 PM, MuldeR <[email protected]> wrote:

> Hello.
> 
> As you might have read, with Windows 8.1, the GetVersion(Ex) API has been 
> deprecated by Microsoft and will now pretend to be Windows 8.0 (NT v6.2), 
> even when running under Windows 8.1 (NT v6.3). And yes, officiallay and in 
> other API's, Windows 8.1 is NT v6.3.
> 
> See here for details:
> http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx
> 
> Microsoft says that they did this in order to prevent compatibility problems. 
> I think it is a horrible idea to break the API in that way. It is also the 
> reason why Qt happily detects Windows 8.1 as Windows 8. Actually Qt should 
> detect an “unknown” operating system, since there is no 8.1 (NT v6.3 
> )detection code yet - I have checked latest version in Git. But Qt detects NT 
> v6.2, thanks to Microsoft's GetVersion(Ex) hack. In other words: 
> QSysInfo::windowsVersion() reports wrong info, starting with (and probably 
> not limited to) Windows 8.1.
> 
> So let's fix QSysInfo!
> 
> I have pulled together a solution that is based on the VerifyVersionInfo() 
> API, which has not been broken, fortunately. Basically, we first call 
> GetVersionEx() to get the "fake" version as a starting point. Then we try to 
> increase the version numbers from there, calling VerifyVersionInfo() each 
> time in order to make sure we did not exceed the *real* version. End result 
> will be the maximum supported version, i.e. the *real* version number.
> 
> 
> Code is here:
> http://pastie.org/private/kkva8pkk7nzcmm8jjwstfa
> 
> Tested on: Windows XP (RTM), Windows 7 SP-1, Windows 8.0, Windows 8.1
> 
> (should work on Windows 2000 too, but I don't really care)
> 
> 
> Output on Windows 7:
>> (Fake) Windows Version: 6.1
>> Trying to verify: 7.0 -->NO
>> Trying to verify: 6.2 -->NO
>> *Real* Windows Version: 6.1
> 
> Output on Windows 8.0:
>> > (Fake) Windows Version: 6.2
>> > Trying to verify: 7.0 -->NO
>> > Trying to verify: 6.3 -->NO
>> > *Real* Windows Version: 6.2
> 
> Output on Windows 8.1:
>> (Fake) Windows Version: 6.2
>> Trying to verify: 7.0 -->NO
>> Trying to verify: 6.3 -->YES
>> Trying to verify: 6.4 -->NO
>> *Real* Windows Version: 6.3
> 
> 
> Regards,
> MuldeR
> 
> _______________________________________________
> Development mailing list
> [email protected]
> http://lists.qt-project.org/mailman/listinfo/development

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to