我有一个返回操作系统版本的程序。
如果在Windows 10上运行,它会将其检测为Windows 8|8.1。
public string GetWindwosClientVersion()  //Get OS Version and if 64 or 32 bit
    {
        int major = System.Environment.OSVersion.Version.Major;
        int minor = System.Environment.OSVersion.Version.Minor;
        int build = System.Environment.OSVersion.Version.Build;
        string bit;
        if (System.Environment.Is64BitOperatingSystem == true) //get 64 or 32 bit
        {
            bit = " 64bit";
        }
        else
        {
            bit = " 32bit";
        }
        if (major == 4 && minor == 0 && build == 950) 
            return "Win95 Release 1" + bit;
        else if (major == 4 && minor == 0 && build == 1111)
            return "Win95 Release 2" + bit;
        else if (major == 4 && minor == 3 && (build == 1212 || build == 1213 || build == 1214))
            return "Win95 Release 2.1" + bit;
        else if (major == 4 && minor == 10 && build == 1998)
            return "Win98" + bit;
        else if (major == 4 && minor == 10 && build == 2222)
            return "Win98 Second Edition" + bit;
        else if (major == 4 && minor == 90)
            return "WinMe" + bit;
        else if (major == 5 && minor == 0)
            return "Win2000" + bit;
        else if (major == 5 && minor == 1 && build == 2600)
            return "WinXP" + bit;
        else if (major == 6 && minor == 0)
            return "Vista" + bit;
        else if (major == 6 && minor == 1)
            return "Win7" + bit;
        else if (major == 6 && minor == 2 && build == 9200)
            return "Win8 | Win8.1" + bit;
        else if (major == 6 && minor == 2 && build == 9600)
            return "Win8.1 Update 1" + bit;
        else if (major == 10 && minor == 0 && build == 10240)
            return "Win10" + bit;
        else
            return "Can not find OS version.";
    }在其他代码中,我看到Windows 10应该是major == 10,但它似乎是major == 6 && minor == 2 && build == 9200。在Windows 7下,它工作得很好。
因为我不使用VS 2015,不能将客户端更新为Windows 8.1 SDK**,** IsWindows10OrGreater 解决方案,在老问题中对我不起作用!
发布于 2015-12-07 11:08:10
要检测您正在Windows 10上运行,您需要对项目进行add a manifest file,并根据您的需要插入这些兼容性标签:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <!-- List of all Windows versions this app is compatible with -->
    <!-- Windows Vista -->
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
    <!-- Windows 7 -->
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    <!-- Windows 8 -->
    <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    <!-- Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    <!-- Windows 10 -->
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
  </application>
</compatibility>如果您不通过清单声明您的应用程序与Windows 10兼容,该框架将总是假装您在Windows8.1上运行。几周前,我们也遇到了同样的问题,并通过添加包含这些兼容性标签的清单来解决这个问题。
发布于 2015-12-07 11:03:12
我无法回忆起页面,但据我所知,Windows 10正在为其VersionNT返回603,这与Windows 8相同.基本上Win 10认为它赢了8。
因此,在条件语句中,Windows 10被捕获为Windows 8,只是因为它位于语句的末尾。这是Microsoft的解决方案:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v=vs.85).aspx
https://stackoverflow.com/questions/34131695
复制相似问题