编程使用WMI 控制连接属性

原创 2004年08月14日 00:16:00
标题     编程使用WMI 控制连接属性    ArLi2003(原作)
关键字     编程使用WMI 控制连接属性,IP,DNS,Gateway,网关,WMI

using System;
using System.Management;

namespace ArLi.CommonPrj {
 public class ChangeIP {

  /// <summary>
  /// Build of ArLi 2003.6.3
  /// </summary>
  public static readonly System.Version myVersion = new System.Version(1,1);

  private ManagementBaseObject iObj = null;
  private ManagementBaseObject oObj = null;
  private ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  private readonly ManagementObjectCollection moc;

  /// <summary>
  /// 例:
  /// <code>
  /// ArLi.CommonPrj.ChangeIP o = new ArLi.CommonPrj.ChangeIP();
  /// string[] ipList = new string[]{"192.168.0.253","192.168.0.250"};
  /// string[] subnetList = new string[]{"255.255.255.0","255.255.255.0"};
  /// o.ChangeTo(ipList,subnetList);
  /// </code>
  /// </summary>
  public ChangeIP(){
   moc = mc.GetInstances(); 
  }
  
  /// <summary>控制连接</summary>
  /// <param name="ipAddr">IP地址列表</param>
  /// <param name="subnetMask">对应子网掩码列表</param>
  public void ChangeTo(string[] ipAddr,string[] subnetMask) {
   foreach(ManagementObject mo in moc) {
    if(! (bool) mo["IPEnabled"]) continue;

    iObj = mo.GetMethodParameters( "EnableStatic" );
    iObj["IPAddress"] = ipAddr;
    iObj["SubnetMask"] = subnetMask;
    oObj = mo.InvokeMethod("EnableStatic", iObj, null);
   }
  }

  /// <summary>控制连接</summary>
  /// <param name="ipAddr">IP地址列表</param>
  /// <param name="subnetMask">对应子网掩码列表</param>
  /// <param name="gateways">网关列表</param>
  /// <param name="gatewayCostMetric">网关接口跃点数列表</param>
  public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric) {
   foreach(ManagementObject mo in moc) {
    if(! (bool) mo["IPEnabled"]) continue;

    iObj = mo.GetMethodParameters("EnableStatic");
    iObj["IPAddress"] = ipAddr;
    iObj["SubnetMask"] = subnetMask;
    oObj = mo.InvokeMethod("EnableStatic", iObj, null);

    iObj = mo.GetMethodParameters("SetGateways");
    iObj["DefaultIPGateway"] = gateways;
    iObj["GatewayCostMetric"] = gatewayCostMetric;
    oObj = mo.InvokeMethod("SetGateways", iObj, null);
   }
  }

  /// <summary>控制连接</summary>
  /// <param name="ipAddr">IP地址列表</param>
  /// <param name="subnetMask">对应子网掩码列表</param>
  /// <param name="gateways">网关列表</param>
  /// <param name="gatewayCostMetric">网关接口跃点数列表</param>
  /// <param name="dnsServer">DNS 服务器列表</param>
  public void ChangeTo(string[] ipAddr, string[] subnetMask, string[] gateways, string[] gatewayCostMetric, string[] dnsServer) {
   foreach(ManagementObject mo in moc) {
    if(! (bool) mo["IPEnabled"]) continue;

    iObj = mo.GetMethodParameters("EnableStatic");
    iObj["IPAddress"] = ipAddr;
    iObj["SubnetMask"] = subnetMask;
    oObj = mo.InvokeMethod("EnableStatic", iObj, null);

    iObj = mo.GetMethodParameters("SetGateways");
    iObj["DefaultIPGateway"] = gateways;
    iObj["GatewayCostMetric"] = gatewayCostMetric;
    oObj = mo.InvokeMethod("SetGateways", iObj, null);

    iObj = mo.GetMethodParameters("SetDNSServerSearchOrder");
    iObj["DNSServerSearchOrder"] = dnsServer;
    oObj = mo.InvokeMethod("SetDNSServerSearchOrder", iObj, null);
   }
  }

  /// <summary>控制连接,使它使用 DHCP</summary>
  public void EnableDHCP() {
   foreach(ManagementObject mo in moc) {
    if(! (bool) mo["IPEnabled"]) continue;

    if(! (bool)mo["DHCPEnabled"]) {
     iObj = mo.GetMethodParameters("EnableDHCP");
     oObj = mo.InvokeMethod("EnableDHCP", iObj, null);
    }
   }
  }
 }
}

利用 WMI 修改计算机的网络设置

 利用 WMI 修改计算机的网络设置Montaque(侯永锋)申明:    1、个人的一点心得,仅供参考    2、转载时候,请保留原本 概述:                在前面的文章中,简要的介...
  • ddarkelf
  • ddarkelf
  • 2004年09月15日 11:12
  • 994

利用 WMI 修改计算机的网络设置

利用 WMI 修改计算机的网络设置Montaque(侯永锋)申明:    1、个人的一点心得,仅供参考    2、转载时候,请保留原本 概述:                在前面的文章中,简要的介绍...
  • Montaque
  • Montaque
  • 2003年10月08日 00:08
  • 1635

.net中的WMI编程(一):WMI介绍及简单应用

前言: 由于.net的某些特点使它脱离了操作系统底层,所以如果我们想获得一些底层的操作系统信息的时候比较困难,经常需要DllImport技术,这对一些对C/C++不熟悉的程序员来说简直是一个梦魇(对于...
  • zhoufoxcn
  • zhoufoxcn
  • 2008年01月14日 02:48
  • 20885

编程使用WMI 控制连接属性

 using System;using System.Management;namespace ArLi.CommonPrj { public class ChangeIP {  ///   /// ...
  • ddarkelf
  • ddarkelf
  • 2004年09月10日 13:28
  • 788

Windows客户端开发--WMI技术介绍

时光荏苒,六道轮回。 2004年,初中,欧锦赛,希腊神话,17岁的C罗哭成了泪人! 2016年,工作,欧洲杯,能否再让C罗哭成泪人?想要获得计算机硬件的详细信息,我们可以使用WMI。今天就作为开篇,谈...
  • wangshubo1989
  • wangshubo1989
  • 2016年07月07日 23:37
  • 26571

C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

转载自: http://blog.csdn.net/ly402609921/article/details/7446943#comments 前段时间由于项目需要,要求做一个服务器的实时性能...
  • ljt350740378
  • ljt350740378
  • 2016年11月18日 10:06
  • 1180

win32 wmi编程获取系统信息

//GetSysInfo.h #pragma once #include class GetSysInfo { public: GetSysInfo(void); ~GetSysInfo(...
  • Gone_HuiLin
  • Gone_HuiLin
  • 2016年12月02日 14:20
  • 240

使用WMI操作AD时常用的属性

在操作AD时,需要了解里面常用的属性名,在这列出常用的,以msRTCSIP开头的属性是有关LCS的属性。objectClassSystem.Object[]cn赏梅sn赏cCNgivenName梅di...
  • dz45693
  • dz45693
  • 2011年06月18日 11:58
  • 3076

Visual C#中用WMI控制远程计算机

WMI不仅可以获取想要的计算机数据,而且还可以用以远程控制。远程控制计算机不仅是黑客们的梦想,也是大多数网络管理者所渴望得到的,尤其在现代的网络中,每一个网络管理者所面对的局域网,都是由一个庞大的计算...
  • songkexin
  • songkexin
  • 2007年10月19日 09:21
  • 1437

C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU、内存、网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧...      当然第一想法肯定是利...
  • o330820350
  • o330820350
  • 2012年12月01日 13:40
  • 1568
收藏助手
不良信息举报
您举报文章:编程使用WMI 控制连接属性
举报原因:
原因补充:

(最多只允许输入30个字)