如何使用C#清除网络接口(nic)的默认网关

时间:2011-07-25 19:19:40

标签: c# .net c#-4.0 wmi

我目前正在使用以下方式更改默认网关:

ManagementBaseObject gateway = mo.GetMethodParameters("SetGateways");
gateway["DefaultIPGateway"] = new string[] { "192.168.0.1" };
var r = mo.InvokeMethod("SetGateways", gateway, null);

我想知道的是如何清除网关,我尝试将空字符串和空值作为参数而不是“192.168.0.1”但不起作用。有人对此有任何想法吗?

由于

4 个答案:

答案 0 :(得分:1)

将网关设置为与NIC的静态IP相同的IP。不知道为什么,但这清除了网关。

答案 1 :(得分:1)

仅当网络接口卡(NIC)处于静态IP模式时,此方法才有效。 要清除网关,请将网关设置为与EnableStatic上使用的IP相同。

请参阅下一页的“备注”: https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/setgateways-method-in-class-win32-networkadapterconfiguration

答案 2 :(得分:0)

有许多配置会导致调用失败,例如启用DHCP,这与WMI无关。假设mo是Win32_NetworkAdapterConfiguration实例,代码本身可能没问题。

如果您还没有,可能需要使用r.Properties["returnvalue"].Value的值来获取返回值,并检查返回值是否符合预期(MSDN ref)。错误代码应该缩小问题范围。

答案 3 :(得分:0)

将网关设置为空数组。

ManagementBaseObject gateway = mo.GetMethodParameters("SetGateways");
gateway["DefaultIPGateway"] = new string[] {};
var r = mo.InvokeMethod("SetGateways", gateway, null);