Попытка изменить настройки сети (DNS) сетевого адаптера в c# с помощью Win32_NetworkAdapterConfiguration, но я не вижу, что я делаю неправильно - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался реализовать решение из этого поста: Как вы можете изменить настройки сети (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. Означает ли это, что мне нужно повышение прав для всей программы, и если да, то как мне этого добиться?

1 Ответ

0 голосов
/ 18 апреля 2020

Да, запуск моего приложения с повышенными правами через app.manifest исправил это для меня. Все, что мне было нужно, это повышенные разрешения. Спасибо за помощь!

...