微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用C#更改网络适配器的接口指标?

如何解决如何使用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 举报,一经查实,本站将立刻删除。