编程使用WMI 控制连接属性

原创 2003年06月17日 09:26:00

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提供程序,您没有权限或者该服务器无法访问。“

最近在学习PowerDesigner,在创建PDM模型的时候,遇到了一点儿小问题,本以为要重装SQLServer,百度了一下,问题就轻松解决了。问题的背景是这样的,在创建数据源的时候,总是测试连接不成...
  • u012904383
  • u012904383
  • 2015年02月25日 19:55
  • 4624

WMI技术介绍和应用——查询系统信息

本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客...
  • breaksoftware
  • breaksoftware
  • 2013年02月05日 18:07
  • 6904

Sql Server 2008 配置管理器 无法连接WMI提供程序

好长一段时间没有碰SQL了,由于要做PB的毕业设计,结果打开数据库的时候却没办法连接了,不能连接的情况之前也遇到过,去配置管理器将相应的项启动即可,可是当我打开配置管理器的时候,有些吃惊,因为跳出来一...
  • jly4758
  • jly4758
  • 2014年03月06日 20:12
  • 18057

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

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

WMI技术介绍和应用——查询硬件信息

这个月实在太忙了,一直没有时间去继续写WMI的应用例子。 本来是希望将《WMI技术介绍和应用》系列博文写的像WMI百科全书般,但是貌似对这个技术感兴趣的同学并不多,所以我决定对部分知识点点到为止,有需...
  • breaksoftware
  • breaksoftware
  • 2013年04月18日 22:50
  • 5445

主机性能监控之wmi 获取系统信息及内存性能信息

欢迎转帖 请保持文本完整并注明出处   这里参考了http://www.cnblogs.com/lxcsmallcity/archive/2009/10/11/1580803.html  ...
  • stecdeng
  • stecdeng
  • 2017年02月20日 11:49
  • 456

100%纯java调用windows的wmi获取监控数据

转:http://my.oschina.net/noahxiao/blog/73163 纯java主要体现在可以跨平台调用com。所用的是j-Interop,它是100%纯java实现的com的...
  • u013578413
  • u013578413
  • 2014年07月21日 15:32
  • 1357

WMI技术介绍和应用——总结(完)

对WMI开发过程的一个总结
  • breaksoftware
  • breaksoftware
  • 2016年02月08日 15:58
  • 2128

WMI 远程连接问题解决方法

原文:http://dragon0704.spaces.live.com/blog/cns!732dddd1803acb26!342.entry   由于需要用取得远程计算机的信息,采用了WMI的...
  • hxh129
  • hxh129
  • 2013年04月03日 16:22
  • 1778

无法连接到 WMI提供程序的解决办法

前几天我的SQL Server无法连接上了,这个问题相信很多人都遇到过,解决的办法无非就是打开SQL Server配置管理器把相应的服务开启,可是这个时候却出现了一个问题,SQL Server配置管理...
  • u010104750
  • u010104750
  • 2015年12月01日 15:44
  • 1539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编程使用WMI 控制连接属性
举报原因:
原因补充:

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