c#与WMI使用技巧集

 更新时间:2007年03月09日 00:00:00   作者:  

获取CPU序列号代码 
string cpuInfo = "";//cpu序列号 
   ManagementClass cimobject = new ManagementClass("Win32_Processor"); 
   ManagementObjectCollection moc = cimobject.GetInstances(); 
   foreach(ManagementObject mo in moc) 
   { 
    cpuInfo = mo.Properties["ProcessorId"].value.ToString(); 
    Console.WriteLine(cpuInfo); 
    Console.ReadLine(); 
   } 
获取网卡硬件地址 
using System.Management; 
... 
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
ManagementObjectCollection moc = mc.GetInstances(); 
foreach(ManagementObject mo in moc) 

if((bool)mo["IPEnabled"] == true) 
Console.WriteLine("MAC address\t{0}", mo["MacAddress"].ToString()); 
mo.Dispose(); 


获取硬盘ID 
String HDid; 
ManagementClass cimobject = new ManagementClass("Win32_DiskDrive"); 
ManagementObjectCollection moc = cimobject.GetInstances(); 
foreach(ManagementObject mo in moc) 

 HDid = (string)mo.Properties["Model"].value; 
 MessageBox.Show(HDid  );  



16、在.NET中轻松获取系统信息(1) -WMI篇 
Montaque 
申明: 
    1、个人的一点心得,仅供参考 
    2、转载时候,请保留原本。 

概述: 
 不知道大家有没有这种体会?有时候为了获取系统一点点信息,比如考虑一下操作系统的版本号,或者当前屏幕的分辨率。其实说到底就是读操作系统某个方面的一个属性值而已,然后就看到我们的程序中密密麻麻的Win32 API申明,调用,代码的可读性和维护性不言而喻。到了.NET,微软提供了更为丰富的类,有很多以前要调用API的方法可以在.NET中轻而易举的调用实现。今天简单介绍一个在.NET中如何通过与WMI(Windows 管理规范)的通讯,从而得到获取信息的目的。 
主要思路: 
 举一个获取操作系统共享目录和获取主板号的例子,介绍如何利用System.Managment下面的类获取系统相关的信息: 

正文: 
 WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。WMI最早出现在Microsoft Windows 2000系统上,但它同样可以安装在Windows NT 4和Windows 9x计算机上。WMI是一种轻松获取系统信息的强大工具。 
 在.NET中,有一个System.Management名空间(系统默认没有引用,我们可以手动添加引用),通过下面的Class的操作,可以查询系统软硬件的信息,先看一个简单的例子: 

Imports System.Management 
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_share") 
Dim share As ManagementObject 
 For Each share In searcher.Get() 
       MessageBox.Show(share.GetText(TextFormat.Mof)) 
 Next share 
运行的结果是列出了所有系统当前共享的目录、以及描述等等。 

分析一下上面的代码,可以看到一下几点: 
1、似乎是在进行数据库操作,有点像SQL语句。其实就是SQL操作,这种语句被成WQL(WMI Query Language),实际上是标准SQL的一个子集加上了WMI的扩展. 
2、WQL是个只读的查询语言,我们只能查询响应的数据,不能用UPDATE,INSERT等更新操作 
3、代码很简单、通俗易懂 
4、我们采用了一种MOF(托管对象格式)的显示。 

例子二:获取当前主板的信息 
 上面的例子是一个软件方面的信息,下面看一个获取硬件信息的例子,获取主板的序列号以及制造商: 
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard") 
Dim share As ManagementObject 
   For Each share In searcher.Get() 
      Debug.WriteLine("主板制造商:" & share("Manufacturer")) 
      Debug.WriteLine("型号:" & share("Product")) 
      Debug.WriteLine("序列号:" & share("SerialNumber")) 
   Next share 
总结以及补充: 
 WMI类也是分层次的,具体可以参考msdn中的WMI;转向.NET平台开发的时候,最好能多看一些关于.NET新特性的介绍,这样可以大幅度的提升代码的开发效率以及运行效率。

相关文章

  • C#正则过滤HTML标签并保留指定标签的方法

    C#正则过滤HTML标签并保留指定标签的方法

    这篇文章主要介绍了C#正则过滤HTML标签并保留指定标签的方法,涉及C#针对页面HTML元素正则匹配与替换相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • C#中string用法实例详解

    C#中string用法实例详解

    这篇文章主要介绍了C#中string用法,非常详细的总结了比较常见的关于C#中string的几个常用方法,需要的朋友可以参考下
    2014-08-08
  • C#调用C类型dll入参为struct的问题详解

    C#调用C类型dll入参为struct的问题详解

    这篇文章主要给大家介绍了关于C#调用C类型dll入参为struct问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C# 并行和多线程编程——认识和使用Task

    C# 并行和多线程编程——认识和使用Task

    这篇文章主要介绍了C# 并行和多线程编程——认识和使用Task的的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C#调用python脚本的方法详解

    C#调用python脚本的方法详解

    这篇文章主要为大家详细介绍了C#调用python脚本的方法,文中通过示例代码介绍的非常详细,感兴趣的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • 关于C# 类和对象详情

    关于C# 类和对象详情

    类是C#面向对象编程的基本单元。一个类都可以包含2种成员:字段和方法,接下来小编将在文章里向大家详细介绍
    2021-09-09
  • C#中通过反射将枚举元素加载到ComboBo的实现方法

    C#中通过反射将枚举元素加载到ComboBo的实现方法

    本文主要介绍了C#中通过反射将枚举元素加载到ComboBo的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • c# 正则指引--字符组

    c# 正则指引--字符组

    c#中通过正则来判断数字字符在同一个位子可能出现的各种字符,需要的朋友可以参考下
    2012-10-10
  • C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    这篇文章主要介绍了C# 基于Spire.Cloud.SDK for .NET对PDF文档进行加密解密,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#可用于登录验证码的四位随机数生成方法

    C#可用于登录验证码的四位随机数生成方法

    这篇文章主要介绍了C#可用于登录验证码的四位随机数生成方法,提供了两种生成四位随机数的方法供大家参考,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12

最新评论