如何在c#中获得真正的操作系统版本?

时间:2015-09-05 17:10:02

标签: c# .net

从.NET 4和Windows 8或更高版本的平台开始,获取运行程序的OS版本是非常不确定的。

例如,在Windows 10中运行,如果我的项目有Windows 8 DLL,那么Environment.OSVersion.Version将返回6.2.9200.0,即Windows 8而非Windows 10。

此问题(crono的答案)中解释了此行为:Windows version in c#

所以我的问题如下:我们如何确定(并以.NET方式保留,以便能够在非Windows平台上使用它)我们的应用程序运行的操作系统版本?

链接到MSDN:

https://msdn.microsoft.com/en-us/library/system.environment.osversion(v=vs.110).aspx

1 个答案:

答案 0 :(得分:10)

如果不考虑使用除Windows之外的其他平台,则可以使用Win32_OperatingSystem WMI类。

  

Win32_OperatingSystem代表基于Windows的操作系统   安装在计算机上

//using System.Linq;
//using System.Management;
var query = "SELECT * FROM Win32_OperatingSystem";
var searcher = new ManagementObjectSearcher(query);
var info = searcher.Get().Cast<ManagementObject>().FirstOrDefault();
var caption = info.Properties["Caption"].Value.ToString();
var version = info.Properties["Version"].Value.ToString();
var spMajorVersion = info.Properties["ServicePackMajorVersion"].Value.ToString();
var spMinorVersion = info.Properties["ServicePackMinorVersion"].Value.ToString();

请务必添加对System.Management.dll的引用。

注意: