C# 如何从窗口';中永久删除辅助网络接口的默认路由规则;C语言中的IP路由表#

C# 如何从窗口';中永久删除辅助网络接口的默认路由规则;C语言中的IP路由表#,c#,windows,routing,C#,Windows,Routing,我有一台多主机windows机器(windows Server 2016),我想确保出站流量永远不会通过辅助网络接口(通过C#编程)流出 我的路由表中有两个网络接口的默认条目: Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 172.31.32.1 172.31.44.180

我有一台多主机windows机器(windows Server 2016),我想确保出站流量永远不会通过辅助网络接口(通过C#编程)流出

我的路由表中有两个网络接口的默认条目:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      172.31.32.1    172.31.44.180     15
          0.0.0.0          0.0.0.0      172.31.96.1    172.31.96.230     15
我认为永久删除次要网络接口的条目对于我的用例来说就足够了。我只希望此条目在以后存在:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      172.31.32.1    172.31.44.180     15
我找到了C#API
DeleteIpForwardEntry
来删除路由,但我不知道如何将此删除永久化,因此重新启动机器不会撤消我的更改

任何帮助都将不胜感激。

在命令提示符下

route delete 0.0.0.0 mask 0.0.0.0 172.31.96.1 -p
不过,我不确定
-p
标志(persistent)是否适用于delete。您必须在命令提示符下测试它。

route delete 0.0.0.0 mask 0.0.0.0 172.31.96.1 -p

不过,我不确定
-p
标志(persistent)是否适用于delete。你得测试一下。

这一种也让我很受不了。关键是将-p放在与add命令相同的位置。在我确定路线的各个方面之前,我也无法摆脱它们

路由删除-p 0.0.0.0掩码0.0.0.0 10.2.2.8公制410如果2

确保准确捕捉每个细节。通过将IF映射到适配器上提供IP的描述,可以从路由表和ipconfig/all命令中捕获参数,然后可以在持久路由表和掩码后的正确网关地址中发现度量

基本上,如果您仍然有执行“添加”路由的命令,那么您可以将“添加”替换为“删除”,它将删除该命令。一旦我这样做了,我就能够移除这些路线


祝你好运。

这一种也让我很失望。关键是将-p放在与add命令相同的位置。在我确定路线的各个方面之前,我也无法摆脱它们

路由删除-p 0.0.0.0掩码0.0.0.0 10.2.2.8公制410如果2

确保准确捕捉每个细节。通过将IF映射到适配器上提供IP的描述,可以从路由表和ipconfig/all命令中捕获参数,然后可以在持久路由表和掩码后的正确网关地址中发现度量

基本上,如果您仍然有执行“添加”路由的命令,那么您可以将“添加”替换为“删除”,它将删除该命令。一旦我这样做了,我就能够移除这些路线


好运。

如果你希望它在重启之前坚持下去,考虑不要在次要接口上指定默认网关(在控制面板中的Ipv4下面),因为它不是必需的。


可选地,您可以调整度量以使其成为一个不太理想的路径,并且您的主接口将始终受到青睐。

< P>如果您希望它在重新引导时坚持,则不要考虑在次要接口上(在IPv4下针对控制面板中的接口)指定默认网关,因为它不是必需的。
或者,您可以调整度量,使其成为不太理想的路径,您的主界面将始终受到青睐。

参数
-p
仅适用于
添加
命令。最好的办法是永久性地添加一条规则,增加不需要的网络接口的度量

route add -p 0.0.0.0 mask 0.0.0.0 172.31.96.1 METRIC 16

-p
参数仅适用于
ADD
命令。最好的办法是永久性地添加一条规则,增加不需要的网络接口的度量

route add -p 0.0.0.0 mask 0.0.0.0 172.31.96.1 METRIC 16
路由删除

路由删除失败:未找到元素

如果看到此错误,请尝试将网关置于命令中,即使您知道它是什么

所以这可以起作用

   route DELETE 192.168.42.0 MASK 255.255.255.0 METRIC 2 IF 10
但这会失败

   route DELETE 192.168.42.0 MASK 255.255.255.0 192.168.2.1 METRIC 2 IF 10
因此,请尝试在不使用接口的情况下删除路由,并允许命令中的最佳猜测部分找出该部分。
在上面的示例中,值
192.168.2.1
被删除以使其工作。

路由删除

路由删除失败:未找到元素

如果看到此错误,请尝试将网关置于命令中,即使您知道它是什么

所以这可以起作用

   route DELETE 192.168.42.0 MASK 255.255.255.0 METRIC 2 IF 10
但这会失败

   route DELETE 192.168.42.0 MASK 255.255.255.0 192.168.2.1 METRIC 2 IF 10
因此,请尝试在不使用接口的情况下删除路由,并允许命令中的最佳猜测部分找出该部分。

在上面的示例中,值
192.168.2.1
被删除以使其正常工作。

谢谢,但我需要在C中以编程方式执行此操作。您可以在C中使用任何命令提示符进程-p不起作用,重新启动后删除的规则就在那里,抱歉。我认为静态路由存储在注册表中。你可以在那里查一下。(HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->->->Services->Tcpip->Parameters->PersistentRoutes)。有关相关的c#类,请参见。谢谢,但我需要在c#中以编程方式执行此操作。您可以在c#中使用任何命令提示进程-p不起作用,重新启动后删除的规则就在那里,抱歉。我认为静态路由存储在注册表中。你可以在那里查一下。(HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->->->Services->Tcpip->Parameters->PersistentRoutes)。有关c#类,请参阅。