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 );
   
}

 

 

 

 

转载于:https://www.cnblogs.com/xiangdejun/archive/2010/07/22/1783061.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值