Windows 10 RTM OSVersion没有返回我期望的内容

use*_*026 11 c# windows debugging windows-10 visual-studio-2015

用以下方法调用Windows 10版本时:

Environment.OSVersion.ToString()
Run Code Online (Sandbox Code Playgroud)

归还这个

在此输入图像描述

Windows 8和8.1版本返回6.2而不是6.3?

我正在使用Windows 10 RTM(从Windows内部升级更新)VS 2015 RC和.Net 4.6

现在我需要获得正确版本的Windows,任何解决方案?

Cod*_*ter 14

它不是一个bug,它在MSDN中:

操作系统版本

Windows 10 Insider Preview    10.0*
Windows Server Technical Preview    10.0*
Windows 8.1 6.3*
Run Code Online (Sandbox Code Playgroud)

*:适用于已在Windows 8.1或Windows 10 Insider Preview中显示的应用程序.未在Windows 8.1或Windows 10 Insider Preview中显示的应用程序将返回Windows 8 OS版本值(6.2).要显示Windows 8.1或Windows 10 Insider Preview 的应用程序,请参阅针对Windows的应用程序.

无论如何,你需要什么样的Windows版本?

  • 应用程序在Windows 8.1上为您提供"6.2"这一事实意味着应用程序不会出现在8.1中.阅读MSDN页面,尤其是[Targeting your application for Windows](https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v = vs.85).aspx)链接. (2认同)

bgc*_*ode 14

使用WMI查询,它是获取版本和相关产品名称的最可靠方法.

        public static KeyValuePair<string, string> GetOSVersionAndCaption()
        {
              KeyValuePair<string, string> kvpOSSpecs = new KeyValuePair<string, string>();
              ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem");
        try
        {

            foreach (var os in searcher.Get())
            {
                var version = os["Version"].ToString();
                var productName = os["Caption"].ToString();
                kvpOSSpecs = new KeyValuePair<string, string>(productName, version);
            }
        }
        catch { }

        return kvpOSSpecs;
    }
Run Code Online (Sandbox Code Playgroud)