C# 释放和续订基于DHCP的IP地址

C# 释放和续订基于DHCP的IP地址,c#,network-programming,C#,Network Programming,使用C#如何释放和续订基于DHCP的IP地址 目前,我正在使用process方法使用以下DOS命令: ipconfig /release 及 在C语言中是否有一种更易于管理的方法?您可以使用WMI,但只使用System.Diagnostics.Process 下面是一个WMI解决方案: ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollect

使用C#如何释放和续订基于DHCP的IP地址

目前,我正在使用process方法使用以下DOS命令:

ipconfig /release


在C语言中是否有一种更易于管理的方法?

您可以使用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); 
}

您可以尝试以下方法:

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();
  }
并不是说您的进程必须具有提升的权限


希望能有所帮助。

我认为处理这类事情的通常方法正是你所做的。@mclaassen你好,好的。谢谢你的澄清:)嗨,我现在就来试试。谢谢,我现在就去试试。谢谢不用foreach我能做吗?有没有办法直接调用objMO.InvokeMethod(“ReleaseDHCPLease”,null,null)?例如:
var objMO=newmanagementobject(@“root/cimv2,$”Win32\u NetWorkAdapterConfiguration),null);
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();
  }