释放和更新基于DHCP的IP地址

3

使用C#,我该如何释放并重新获取基于DHCP的IP地址?

目前,我正在使用进程方法来使用这些DOS命令:

ipconfig /release

并且

ipconfig /renew

在C#中是否有更加管理的方法来处理这个问题?


2
我认为处理这种事情的通常方法就是你现在正在做的。 - mclaassen
@mclaassen 嗨,好的。谢谢你的澄清 :) - Andrew Simpson
2个回答

6
你可以使用WMI,但使用System.Diagnostics.Process更简单。
以下是WMI解决方案:
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
    //Need to determine which adapter here with some kind of if() statement
    objMO.InvokeMethod("ReleaseDHCPLease", null, null);
    objMO.InvokeMethod("RenewDHCPLease", null, null); 
}

嗨,我现在会尝试做。谢谢。 - Andrew Simpson
我可以不使用foreach完成吗?有没有直接调用objMO.InvokeMethod("ReleaseDHCPLease", null, null)的方法?像这样:var objMO = new ManagementObject(@"root/cimv2, $"Win32_NetWorkAdapterConfiguration", null); - Thiago Guimarães

1
你可以尝试这样做:

SelectQuery query = new SelectQuery("Win32_NetworkAdapter", "AdapterTypeID=0");
  ManagementObjectSearcher search = new ManagementObjectSearcher(query);
  foreach (ManagementObject result in search.Get())
  {
    NetworkAdapter adapter = new NetworkAdapter(result);
    adapter.Disable();
  }

并不是说您的进程必须具有提升的特权。

希望能对您有所帮助。


嗨,我现在就试一下。谢谢。 - Andrew Simpson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接