繁体   English   中英

尝试使用 Win32_NetworkAdapterConfiguration 更改 c# 中网络适配器的网络设置(DNS),但我看不出我做错了什么

[英]Trying to change the network settings(DNS) of a network adapter in c# with Win32_NetworkAdapterConfiguration but I can't see what I'm doing wrong

我一直在尝试从这篇文章中实现解决方案: How can you change Network settings (IP Address, DNS, WINS, Host Name) with code in C#但由于某种原因,它似乎不适用于我的情况和我无法确定问题所在。 我有这个方法:

 public void SetDNS(string NIC, string DNS)
        {
            ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMC.GetInstances();

            foreach (ManagementObject objMO in objMOC)
            {
                if ((bool)objMO["IPEnabled"])
                {

                    if (objMO["Caption"].Equals(NIC))
                    {

                        ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder");
                        newDNS["DNSServerSearchOrder"] = DNS.Split(',');
                        _ = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
                        System.Diagnostics.Debug.WriteLine("testing");

                    }
                }
            }
        }

然后我这样称呼它SetDNS(objMO["Caption"].toString(), "192.168.7.2,8.8.8.8"); 其中objMO["Caption"]是我要配置的当前网络适配器的 NIC 描述。 当我运行调试以测试程序时,网络适配器设置没有任何变化,但在调试 output window “测试”确实被打印出来,所以我知道该方法已执行。 我在这里有什么明显的遗漏吗? 我是 WPF 和 win32 的新手,所以如果我遗漏了什么,我提前道歉,谢谢。

编辑:当我检查SetDNSServerSearchOrder的返回值时,它返回了一个错误代码91这意味着Access Denied 这是否意味着我需要提升整个计划,如果需要,我该如何实现?

是的,通过app.manifest配置运行我的应用程序为我修复了它。 我所需要的只是提升权限。 感谢帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM