Я пытался реализовать решение из этого поста: Как вы можете изменить настройки сети (IP-адрес, DNS, WINS, имя хоста) с кодом в 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"]
- это описание NI C текущего сетевого адаптера, который я хочу настроить. Когда я запускаю отладку для тестирования программы, ничего не происходит с настройками сетевого адаптера, но в окне вывода отладки выводится «test», поэтому я знаю, что метод выполнен. Есть ли что-то очевидное, чего мне здесь не хватает? Я новичок в WPF и win32, поэтому я заранее извиняюсь, если что-то пропустил, спасибо.
РЕДАКТИРОВАТЬ: Когда я проверил возвращаемое значение SetDNSServerSearchOrder
, оно вернулось код ошибки 91
, что означает Access Denied
. Означает ли это, что мне нужно повышение прав для всей программы, и если да, то как мне этого добиться?