尝试使用 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

我一直在尝试通过 post: 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 描述。当我 运行 调试程序来测试程序时,网络适配器设置没有任何变化,但在调试输出中 window "testing" 确实被打印出来,所以我知道该方法已执行。有什么明显的我在这里失踪了吗?我是 WPF 和 win32 的新手,所以如果我遗漏了什么,我提前道歉,谢谢。

编辑: 当我检查 SetDNSServerSearchOrder 的 return 值时,它 returned 了一个 91 的错误代码表示 Access Denied。这是否意味着我需要提升整个程序,如果需要,我该如何实现?

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