https://bugs.winehq.org/show_bug.cgi?id=43999
Bug ID: 43999 Summary: GetVersion incorrectly fails to lie about the OS version when masquerading as Windows 8.1 or 10 Product: Wine Version: 2.19 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs@winehq.org Reporter: fiendishx@gmail.com Distribution: ---
Windows 8.1 and Windows 10 require applications to have an embedded manifest specifically targeting their versions before they will respond truthfully to GetVersion, GetVersionEx, and (10 only) VerifyVersionInfo calls.
Wine answers truthfully for unmanifested applications, which is unfortunately the wrong behavior.
https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v=vs.85).a... says:
"In Windows 8.1 and Windows 10, the GetVersion and GetVersionEx functions have been deprecated. In Windows 10, the VerifyVersionInfo function has also been deprecated. While you can still call the deprecated functions, if your application does not specifically target Windows 8.1 or Windows 10, you will get Windows 8 version (6.2.0.0)."
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).a... says:
"With the release of Windows 8.1, the behavior of the GetVersion API has changed in the value it will return for the operating system version. The value returned by the GetVersion function now depends on how the application is manifested.
Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). Once an application is manifested for a given operating system version, GetVersion will always return the version that the application is manifested for in future releases."
https://bugs.winehq.org/show_bug.cgi?id=43999
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- Do you have an application that's broken because of this?
https://bugs.winehq.org/show_bug.cgi?id=43999
--- Comment #2 from fiendishx@gmail.com --- (In reply to Nikolay Sivov from comment #1)
Do you have an application that's broken because of this?
How do you think I discovered the difference? :)
https://bugs.winehq.org/show_bug.cgi?id=43999
--- Comment #3 from fiendishx@gmail.com --- To clarify I have two peculiar circumstances, the priority on which are both probably super low.
One was kind of a reverse breaking. I work on a win32 program that, for various reasons including legacy support for a system that I don't run anymore, is developed almost exclusively in Wine (wine works really well for this old 98 era MFC stuff). It never had an application manifest because it's never needed one. At least it was thought so. But because Wine reports the right version info for unmanifested applications in circumstances where Windows would not, an emergent failure on new Windows computers was masked. The solution here is obviously to just embed a manifest that turns OS support up to 11, so ultimately no real harm.
The other is, oddly enough, a demonstrator program for teaching about the value of embedding manifests in applications that someone was trying to use under similar circumstances.
https://bugs.winehq.org/show_bug.cgi?id=43999
--- Comment #4 from Austin English austinenglish@gmail.com --- (In reply to fiendishx from comment #3)
The other is, oddly enough, a demonstrator program for teaching about the value of embedding manifests in applications that someone was trying to use under similar circumstances.
Can you attach the source/binary (if you have permission) or point to a downloadable program that exhibits the bug?
https://bugs.winehq.org/show_bug.cgi?id=43999
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEEDINFO
--- Comment #5 from Nikolay Sivov bunglehead@gmail.com --- Ping? It still would be nice to have a test program from reporter.
https://bugs.winehq.org/show_bug.cgi?id=43999
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |6719bf2e037b95b8338fae9e660 | |c43e8fadafc7a Status|NEEDINFO |RESOLVED
--- Comment #6 from Nikolay Sivov bunglehead@gmail.com --- I'm going to mark this fixed. Manifest controlled version spoofing was implemented with 6719bf2e037b95b8338fae9e660c43e8fadafc7a. Please retest if you still can.
https://bugs.winehq.org/show_bug.cgi?id=43999
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 5.17.