从 Windows 10 开始,微软已经弃用了 GetVersionEx 方式获取 Windows 系统版本 [官方解释]。这就导致网上一大批C#获取 Windows 版本的代码把 Windows 10 识别为 Windows 8。比如我的电脑 Windows 10 就被识别成 6.2.9200,进而判断出是 Windows 8。
按照微软官方论坛提示,可以通过 WMI(Windows Management Instruction) 获取正确系统的版本号。下面把WMI方式获取Windows系统版本方式写出来。
顺便吐槽一下,现在博客的原创是越来越水。比如说今天谈到滴这个问题:排在前面的几个搜索结果基本都是一样的,那些打着原创滴博主也不知道是谁抄谁,总之都一样。更严重滴问题是:按照博客照搬滴代码编译都通过不了。。。。;
麻烦各位同仁抄别人东西的时候,请先验证一下。
好了,回到正题。
方法如下
1:引用system.management库
2:代码如下:
public static string get_OSVersion()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
string sCPUSerialNumber = "";
foreach (ManagementObject mo in searcher.Get())
{
sCPUSerialNumber = mo["Name"].ToString().Trim();//操作系统名字
//sCPUSerialNumber = mo["BootDevice"].ToString().Trim();//系统启动分区
//sCPUSerialNumber = mo["NumberOfProcesses"].ToString().Trim();//当前运行的进程数
//sCPUSerialNumber = mo["SerialNumber"].ToString().Trim();//操作系统序列号
//sCPUSerialNumber = mo["OSLanguage"].ToString().Trim();//操作系统的语言
//sCPUSerialNumber = mo["Manufacturer"].ToString().Trim();//
}
return sCPUSerialNumber.Substring(10, 10);//分割字符串
}
catch (Exception e)
{
return string.Empty;
}
}
3:扩展
ManagementObjectSearcher()里面的参数列表如下链接。