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

时间:2015-07-20 15:15:51

标签: c# windows debugging visual-studio-2015 windows-10

使用以下命令调用Windows 10版本时

Environment.OSVersion.ToString()

返回此

enter image description here

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

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

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

3 个答案:

答案 0 :(得分:14)

它不是一个错误,它在MSDN中:

  

Operating System Version

Windows 10 Insider Preview    10.0*
Windows Server Technical Preview    10.0*
Windows 8.1 6.3*
     

*:适用于已针对Windows 8.1或Windows 10 Insider Preview显示的应用程序。 未在Windows 8.1或Windows 10 Insider Preview中显示的应用程序将返回Windows 8操作系统版本值(6.2)。要显示Windows 8.1或Windows 10 Insider Preview的应用程序,请参阅Targeting your application for Windows

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

答案 1 :(得分: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;
    }

答案 2 :(得分:1)

Windows 10有一个新的注册表项 - 您将从addFilterAfter(Filter filter, Class<? extends Filter> afterFilter)获得HttpSecurity的结果,并且(理论上)不会从早期版本获得结果。

根据秒表对象,它在0毫秒内运行,而WMI方法对我来说至少需要30毫秒。