Назад | Перейти на главную страницу

Как изменить DNS-серверы сетевого адаптера в Windows без использования netsh или WIM

Я хотел бы программно изменить DNS-серверы сетевого адаптера в Windows. Я не хочу использовать WMI, потому что он не работает, например, когда к изменяемому адаптеру Ethernet не подключен сетевой кабель. Более того, он не поддерживает настройку конфигурации IPv6.

Поэтому я попытался установить DNS-серверы прямо в системном реестре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip[6]\Parameters\Interfaces\[Interface GUID]\NameServer

К сожалению, эти настройки не применяются мгновенно.

Кажется, что команда Netsh отлично выполняет то, что я хочу, но, честно говоря, я думаю, что было бы лучше, если бы я мог не запускать внешние процессы из приложения, которое я создаю. Хотелось бы, чтобы она была независимой. Мне интересно, есть ли способ сделать это. Может быть, нужно изменить и другие изменения реестра, или какое-то действие должно быть инициировано WMI?

NETSH по-прежнему то, чем вы хотите заниматься. Кажется, вы разработали какое-то приложение, но изменение реестра - это не лучший вариант.

Кроме того, я настоятельно рекомендую вам использовать DHCP и резервирование, а не жестко кодировать любые IP-настройки на каждом сервере / клиенте - помимо тех немногих, которые должны быть (например, DHCP-серверы, контроллеры домена).

DHCP позволяет централизованно управлять этими настройками и развертывать их для клиентов DHCP (клиент / серверная ОС), даже не касаясь их.

Единственным другим вариантом будет PowerShell - но опять же - вы, похоже, не хотите использовать «внешние» программы, хотя - NETSH является частью Windows, только это инструмент командной строки (более или менее).

Вы не особо много говорите о платформе разработки, которую используете, но есть еще один шанс, что, например, провайдер .NET FrameWork позволяет вам перечислять и изменять настройки сетевых карт, я никогда не обращал внимания на это специально, но я мог предположить, что есть шанс, что вы сможете это сделать ..

И если вы боитесь, что NETSH выйдет из строя - что ж, вы все равно можете запустить его, а затем дважды проверить реестр, если были применены ожидаемые настройки.