尝试使用 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
配置升级为我修复了它。我所需要的只是提升权限。感谢您的帮助!
我一直在尝试通过 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
配置升级为我修复了它。我所需要的只是提升权限。感谢您的帮助!