我想通過c#編程方式在Windows 7中配置所有活動的網絡適配器。以編程方式在C#中配置Win 7網絡適配器
我曾嘗試下面的代碼:
string newIPAddress = "100.200.100.11";
string newSubnetMask = "255.255.255.1";
string[] newGateway = { "100.200.100.1" };
ManagementObjectSearcher m = new ManagementObjectSearcher();
m.Query = new ObjectQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True");
foreach (ManagementObject mo in m.Get())
{
try
{
ManagementBaseObject setIP;
ManagementBaseObject newIP = mo.GetMethodParameters("EnableStatic");
newIP["IPAddress"] = new string[] { newIPAddress };
newIP["SubnetMask"] = new string[] { newSubnetMask };
setIP = mo.InvokeMethod("EnableStatic", newIP, null);
mo.InvokeMethod("SetGateways", new object[] { newGateway, new string[] { "1" } });
mo.InvokeMethod("SetDNSServerSearchOrder", new object[] { new string[] { "100.100.100.100" } });
}
catch (Exception)
{
throw;
}
}
,但它只是更新的默認網關和其他人改變不了什麼。
我已經使用netsh命令,以及:
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
Console.WriteLine(adapter.Name);
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo("netsh", "interface ip set address \"" + adapter.Name + "\" static 192.168.0.10 255.255.255.0 192.168.0.1 ");
psi.UseShellExecute = false;
p.StartInfo = psi;
p.Start();
}
但它爲第一個適配器之後,它thows一個錯誤:
「無法配置DHCP服務的接口可能會斷開連接「。
如何在C#中配置所有適配器?
在命令行中運行'ipconfig/all',你會看到它確實顯示斷開的網絡適配器,所以它不是真的會引發錯誤。 – JMK 2013-03-14 12:00:36
感謝您的回覆。唯一的變化就是在運行netsh代碼之後在啓用的適配器中看到「自動獲取IP地址」變爲「使用下面的IP」而沒有IP地址。另外,我想每次創建一個新進程都不是一種有效的方式配置網絡適配器。我們可能會結束有很多zoombie進程在運行。 – 2013-03-14 12:22:48