如何解决如何使用C#更改网络适配器的接口指标?
| 关于下面的链接 https://stackoverflow.com/questions/5577406/enable-both-lan-intranet-and-usb-internet 有没有办法以编程方式使用c#?解决方法
这是一个代码项目文章,向您展示如何执行此操作:
http://www.codeproject.com/KB/IP/winnetstat.aspx
基本上,您可以使用IP Helper API和SetIpForwardEntry方法来完成此任务。
这是一篇指导您如何实现它的文章(带有随附的代码):
http://www.developer.com/ws/pc/article.php/10947_3415521_2/IP-Helper-API-ARP-Routing-and-Network-Statistics.htm
, 尽管大约7年前就回答了该问题,但我发现使用netsh.exe在C#中非常简单的方法。
仅当您以管理员身份运行程序时,此方法才有效。
该命令是:
netsh.exe接口ipv4设置接口\“ myNICsName \”指标= 20
要将指标设置为“自动”,只需将其设置为0。
上限是9999,但是如果您使用更高的值,它将为您设置为9999。
要以编程方式执行此操作,只需按以下方式使用Process.Start:
System.Diagnostics.Process p = new System.Diagnostics.Process
{
StartInfo =
{
FileName = \"netsh.exe\",Arguments = $\"interface ipv4 set interface \\\"{nicName}\\\" metric={metric}\",UseShellExecute = false,RedirectStandardOutput = true
}
};
bool started = p.Start();
if (started)
{
if (SpinWait.SpinUntil(() => p.HasExited,TimeSpan.FromSeconds(20)))
{
Log.Write($\"Successfully set {nicName}\'s metric to {metric}\");
Log.Write($\"Sleeping 2 seconds to allow metric change on {nicName} to take effect.\");
Thread.Sleep(2000);
return true;
}
Log.Write($\"Failed to set {nicName}\'s metric to {metric}\");
return false;
}
上面的代码还进行了一些错误检查,以确保该过程确实开始并且延迟了一小段时间,以便使度量标准更改有机会生效。我发现不包括延迟时,我的代码出现了一些问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。