【发布时间】:2015-01-16 15:39:58
【问题描述】:
我想在适配器中设置 IP 地址。我得到了以下代码的几个参考。但执行此操作后,当我检查适配器 ip 地址时,它并没有改变。它总是向我显示旧的 IP 地址。不给出任何错误/异常。 如何更改适配器的IP地址?
/// <summary>
/// Set's a new IP Address and it's Submask of the local machine
/// </summary>
/// <param name="ipAaddress">The IP Address</param>
/// <param name="subnetMask">The Submask IP Address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void SetIP(string ipAaddress, string subnetMask)
{
ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection managementObjectCollection = managementClass.GetInstances();
foreach (ManagementObject managementObject in managementObjectCollection)
{
if ((bool)managementObject["IPEnabled"])
{
try
{
string[] addresses = (string[])managementObject["IPAddress"];
//Console.WriteLine(addresses[0]);
if (addresses[0] == "xxx.xx.xxx.xx") //xxx.xx.xxx.xx should be some valid ip
{
ManagementBaseObject managementBaseObjectNew = managementObject.GetMethodParameters("EnableStatic");
managementBaseObjectNew["IPAddress"] = new string[] { ipAaddress };
managementBaseObjectNew["SubnetMask"] = new string[] { subnetMask };
ManagementBaseObject managementBaseObjectSet = managementObject.InvokeMethod("EnableStatic", managementBaseObjectNew, null);
}
}
catch (Exception)
{
throw;
}
}
}
}
【问题讨论】:
标签: c# windows-7 network-programming