C#用Windows Management Instrumentation获取本机各种信息

1. 添加

System.Management 的引用

2. 在cs代码中初始化引用

ManagementClass mc = new ManagementClass("引用的WMI库名称");

可供引用的WMI类库在MSDN中可查到:

http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx

3. 获取WMI实例

ManagementObjectCollection moc= vNetworkAdapter.GetInstances();

这里获取到的是WMI实例集合,例如,获取网络适配器信息,这里会获取到无线连接、有线连接、1394连接等与网络连接有关的实例集合。

4. 循环个实例获取其属性

foreach (ManagementObject mo in moc)
{

  //TODO: 获取各实例属性

  //实例各属性、方法、解释也可在http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx里查到

}

5. 修改

修改需要用到 ManagementObject.InvokeMethod(MethodName, ManagementBaseObject, InvokeMethodOptions ); 方法

MethodName 为要执行的方法名称的,也可在上面MSDN的链接中查到;

ManagementBaseObject 不好解释,官方解释为“包含管理对象的基本元素。用作管理更具体的管理对象类的基类。”

InvokeMethodOptions 执行附加选项,可以为NULL。

 

完整实例:

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc 
= mc.GetInstances();
foreach (ManagementObject  mo in moc)
{
    
//如果没有启用IP设置的网络设备则跳过   
    if (!(bool)mo["IPEnabled"])
        
continue

    
// 获取属性
    string caption = mo["Caption"].ToString();              //名称
    string[] addresses = (string[])mo["IPAddress"];         //IP地址
    string[] subnets = (string[])mo["IPSubnet"];            //子网掩码
    string[] gateways = (string[])mo["DefaultIPGateway"];   //网关
    string[] dnses = (string[])mo["DNSServerSearchOrder"];  //DNS

    ManagementBaseObject newIP;

    
// 修改IP及子网掩码
    newIP = mo.GetMethodParameters("EnableStatic");    
    newIP[
"IPAddress"= new string[] { "192.168.2.51" };
    newIP[
"SubnetMask"= new string[] { "255.255.255.0" }; //修改IP同时,需要填写子网掩码
    mo.InvokeMethod("EnableStatic", newIP, null);
    

    
// 设置网关地址 
    newIP = mo.GetMethodParameters("SetGateways");
    newIP[
"DefaultIPGateway"= new string[] { "192.168.2.1" };
    mo.InvokeMethod(
"SetGateways", newIP, null);

    
// 设置DNS 
    newIP = mo.GetMethodParameters("SetDNSServerSearchOrder");
    newIP[
"DNSServerSearchOrder"= new string[] { "192.168.1.10" };
    mo.InvokeMethod(
"SetDNSServerSearchOrder", newIP, null);
   
}

 

 

 

 

posted @ 2010-07-22 14:41  Darren.Xiang  阅读(8229)  评论(0编辑  收藏  举报