TOSVersion gives wrong result
Asked Answered
S

1

5

I have client 64 bit Windows 7 installed on his computer. Below same codes gives different results on a dummy application and in my application. My application is group project and have 25 packages.

TOSVersion.Name: Windows 7
TOSVersion.ToString: Windows 7 Service Pack 1 (Version 6.1, Build 7601, 64-bit Edition)

TOSVersion.Name: Windows XP
TOSVersion.ToString: Windows XP Service Pack 3 (Version 5.1, Build 2600, 64-bit Edition)

What may be causing problem?

Manifest file settings Auto Generate. There is not a .manifest file but I could found "supportedOS" entry in .res file in both project. Both of them have same content like below:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
        <!--The ID below indicates app support for Windows Vista -->
        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
        <!--The ID below indicates app support for Windows 7 -->
        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
        <!--The ID below indicates app support for Windows 8 -->
        <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
        <!--The ID below indicates app support for Windows 8.1 -->
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
        <!--The ID below indicates app support for Windows 10 -->
        <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>          
    </application> 
</compatibility>
Supernaturalism answered 20/12, 2017 at 12:8 Comment(5)
Answer likely to be found in the application manifest. Specifically in the supportedOS entries.Chrystel
.. or compatibility settings..Fairish
Thank you both of you. Problem was as Sertaç said :)Serpentiform
@SertacAkyuz if you write your comment as answer, I can mark it as correct answer.Serpentiform
@Enes - done. You're welcome.Fairish
F
6

Likely cause is that a compatibity fix (a shim) is applied to the executable on the client's computer; specifically the WinXPSP3VersionLie fix. TOSVersion record uses GetVersionEx to determine the OS version in its class constructor, which is effected by the shim as documented.

One way to verify is to examine the event log. An event will be logged either it's the user who's applying the fix through program properties dialog (support article) or the Program Compatibility Assistant, or through Application Compatibility Toolkit. You can search your executable's name in

Event Log\Application and Services\Microsoft\Windows\Application-Experience\Program-Telemetry
Fairish answered 20/12, 2017 at 18:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.