Windows 10 RTM OSVersion not returning what I expect

只愿长相守 提交于 2019-12-05 01:08:39

It's not a bug, it's in MSDN:

Operating System Version

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

*: For applications that have been manifested for Windows 8.1 or Windows 10 Insider Preview. Applications not manifested for Windows 8.1 or Windows 10 Insider Preview will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10 Insider Preview, refer to Targeting your application for Windows.

What do you need the Windows version for anyway?

Use WMI query instead, it is the most reliable way to get the version and related product name.

        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;
    }

Windows 10 has a new registry key - you will get a result of 10 from Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentMajorVersionNumber", Nothing) and (in theory) not from earlier versions.

This runs in 0 milliseconds according to the stopwatch object, whereas the WMI method takes at least 30 ms for me.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!