Winform读取操作系统提要
Winform读取操作系统摘要
我想读取部分Windows操作系统摘要信息,在网上找的些代码感觉不是很快,但是这个系统信息文件打开却很快,想问下有没有相关代码或类可参考?

------解决思路----------------------
系统版本都在Environment.OSVersion里面
详细的在WMI查询
我想读取部分Windows操作系统摘要信息,在网上找的些代码感觉不是很快,但是这个系统信息文件打开却很快,想问下有没有相关代码或类可参考?
------解决思路----------------------
系统版本都在Environment.OSVersion里面
详细的在WMI查询
/// <summary>
/// 通过WMI查询系统相关类的信息
/// </summary>
/// <param name="win32ClassName">组件类名</param>
/// <param name="propertyNames">要查询的属性列表,为null时将列出所有</param>
/// <param name="predicate">属性值的筛选条件(空值已排除)</param>
/// <param name="tips">提示信息</param>
static void QuerySystemInfoByWmi(string win32ClassName, List<string> propertyNames, Predicate<string> predicate, string tips)
{
WriteLine();
WriteLine("===================={0}====================", win32ClassName);
if (!string.IsNullOrEmpty(tips)) WriteLine(tips);
ManagementClass mc = null;
DateTime start = DateTime.Now;
try
{
mc = new ManagementClass(win32ClassName);
using (ManagementObjectCollection moc = mc.GetInstances())
{
int i = 0, instanceCount = moc.Count;
if (instanceCount > 1)
WriteLine("该对象共有 {0} 个实例,方括号中是其编号!", instanceCount);
foreach (ManagementObject mo in moc)
{
i++;
IEnumerable<PropertyData> properties = mo.Properties.Cast<PropertyData>();
//通过属性名筛选
if (propertyNames != null && propertyNames.Count > 0)
properties = properties.Where(
pd => propertyNames.Exists(
pn => pn.Equals(pd.Name, StringComparison.OrdinalIgnoreCase)
));
//通过属性值筛选
if (predicate != null)
properties = properties.Where(pd => pd.Value != null && predicate(pd.Value.ToString()));
properties = properties.ToList();
//输出属性字典
if (properties.Count() > 0)
{
string prefix = instanceCount > 1 ? string.Format("{0}[{1}].", win32ClassName, i) : string.Empty;
foreach (PropertyData pd in properties)
WriteLine("{0}{1}: {2}", prefix, pd.Name, pd.Value);
WriteLine("查询耗时:{0} 毫秒", (DateTime.Now - start).TotalMilliseconds);
}
}
}
}
catch (Exception exp)
{
WriteLine("查询{0}出错!\r\n异常:{1}\r\n堆栈:{2}", win32ClassName, exp.Message, exp.StackTrace);
}
finally
{
if (mc != null) mc.Dispose();
}
}
查询所有属性
QuerySystemInfoByWmi("Win32_ComputerSystem", null, null, null);
查询指定属性
var propertyNames = new List<string> { "Caption", "Name", "CSDVersion", "Version" };
QuerySystemInfoByWmi("Win32_OperatingSystem", propertyNames, null, null);