![](/img/trans.png)
[英]Polling for IP address change in C# using WMI/Win32_NetworkAdapterConfiguration
[英]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.