【发布时间】:2014-07-10 00:44:12
【问题描述】:
我正在寻找一种在给定网络适配器上使用 C# 启用或禁用 DHCP 的方法。寻找最简单的解决方案。
谢谢。
【问题讨论】:
-
什么是“散文家解决方案”?您的意思是“最简单的解决方案”吗?
-
@user27811 这个问题是关于禁用 DHCP,而不是禁用适配器本身。
标签: c# networking dhcp
我正在寻找一种在给定网络适配器上使用 C# 启用或禁用 DHCP 的方法。寻找最简单的解决方案。
谢谢。
【问题讨论】:
标签: c# networking dhcp
也许……
const string networcCardName = "[00000007] Intel(R) Ethernet Connection I217-LM"; //Example NIC name
var management = new ManagementClass("Win32_NetworkAdapterConfiguration");
var moc = management.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject) o;
if (!(bool) mo["IPEnabled"]) continue;
if (!mo["Caption"].Equals(networcCardName)) continue;
var ndns = mo.GetMethodParameters("SetDNSServerSearchOrder");
ndns["DNSServerSearchOrder"] = null;
var enableDhcp = mo.InvokeMethod("EnableDHCP", null, null);
var setDns = mo.InvokeMethod("SetDNSServerSearchOrder", ndns, null);
}
【讨论】:
您可以使用Process 触发netsh 命令来设置网络对话框中的所有属性。
例如: 在适配器上设置静态 ipaddress
netsh interface ip set address "Local Area Connection" static 192.168.0.10 255.255.255.0 192.168.0.1 1
要将其设置为您将使用的 dhcp
netsh interface ip set address "Local Area Connection" dhcp
用 C# 来做会是
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo("netsh", "interface ip set address \"Local Area Connection\" static 192.168.0.10 255.255.255.0 192.168.0.1 1");
p.StartInfo = psi;
p.Start();
设置为静态可能需要几秒钟才能完成,因此如果需要,请确保等待进程退出。
【讨论】: