C#设置网卡信息(IP,子网掩码,网关,DNS)

using System.Management; // System.Management
using System.Collections; // System.Collections

namespace Win32_NetworkAdapterConfiguration
{
public partial class Form1 : Form
{
ArrayList AryLst = new ArrayList(); // ArrayList
ManagementObject objCls; // ManagementObject
string strCls = "Win32_NetworkAdapterConfiguration"; // WMI 命名空间 ( Namespace )
string strNS = "root\\CIMV2"; // WMI 类 (Class)
string strIndex; // 用来记录网卡界面 Index
Public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
GetAdtInfo(); // 获取网卡信息
}
private void GetAdtInfo()
{
// 指定查询网卡信息 ( IPEnabled 为 True 的 )
string strQry = "Select * from Win32_NetworkAdapterConfiguration where IPEnabled=True";
// ManagementObjectSearcher 类 ,根据指定的查询获取物理控件的集合。
ManagementObjectSearcher objSc = new ManagementObjectSearcher(strQry);
// 用foreach获取元素
foreach (ManagementObject objQry in objSc.Get())
{
AryLst.Add(objQry["Index"]);
ComboBox.Items.Add(objQry["Description"]);
}
}
//
private void button1_Click(object sender, EventArgs e)
{
string strIP = "192.168.1.3"; // IP地址
string strSubmask = "255.255.255.0"; // 子网掩码
string strGateway = "192.168.1.1"; // 网关
string strDNS1 = "168.95.1.1"; // 首选DNS
string strDNS2 = "168.95.192.1"; // 备用DNS
// 调用SetNetCfg()方法设定网卡信息
SetNetCfg(strIP, strSubmask, strGateway, strDNS1, strDNS2);
}
public void SetNetCfg(string strIP, string strSubmask, string strGateway, string strDNS1, string strDNS2)
{
// 建立 ManagementObject 物件 ( Scope , Path , options )
objCls = new ManagementObject(strNS, strCls + ".INDEX=" + strIndex, null);
ManagementBaseObject objInPara; //
objInPara = objCls.GetMethodParameters("EnableStatic");
objInPara["IPAddress"] = new string[] { strIP }; // 设置IP
objInPara["SubnetMask"] = new string[] { strSubmask }; // 设置子网掩码
objCls.InvokeMethod("EnableStatic", objInPara, null);
objInPara = objCls.GetMethodParameters("SetGateways");
objInPara["DefaultIPGateway"] = new string[] { strGateway }; // 设置网关
objCls.InvokeMethod("SetGateways", objInPara, null);
objInPara = objCls.GetMethodParameters("SetDNSServerSearchOrder");
objInPara["DNSServerSearchOrder"] = new string[] { strDNS1, strDNS2 }; // 设置DNS
objCls.InvokeMethod("SetDNSServerSearchOrder", objInPara, null);
// GetMethodParameters 方法 : 用來取得 SetDNSServerSearchOrder 的参数列表。
// InvokeMethod 方法 : 调用。
}
// Button2 使用 DHCP自动获取 IP
private void button2_Click(object sender, EventArgs e)
{
SetAuto(); // 调用SetAuto方法
}
public void SetAuto()
{
// 建立 ManagementObject 对象 ( Scope , Path , options )
objCls = new ManagementObject(strNS, strCls + ".INDEX=" + strIndex, null)
// InvokeMethod 方法 : 在对象上调用方法。
objCls.InvokeMethod("EnableDHCP", null); // 设置自动获取 IP
objCls.InvokeMethod("ReleaseDHCPLease", null); // 释放 IP
objCls.InvokeMethod("RenewDHCPLease", null); // 重新取得 IP
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
strIndex = (ComboBox.SelectedIndex + 1).ToString();
}
}
}



posted @ 2012-03-06 10:15  冬季的阳光  阅读(2358)  评论(0)    收藏  举报