编程使用WMI 控制连接属性

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

}

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航