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。

 

完整实例:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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);

   

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值