Нужен способ в C ++ настроить DNS-серверы на всех интерфейсах - PullRequest
1 голос
/ 18 октября 2010

Я пишу небольшое приложение в C ++ для Win XP / 7 с целью, чтобы, пока приложение работает, http://*.dev будет указывать на http://localhost.

Это часть мода для XAMPP / WAMP, разрешающая виртуальные домены с именами каталогов на localhost (например, http://test.dev/index.php будет отображаться в G: \ xampp \ virtual \ test \ index.php)

Часть этого запускается как DNS-прокладка на всех адаптерах. У меня работает иконка в трее, а также ее основные функции (запускать posadis при запуске, kill при выходе, отслеживать процесс posadis и закрывать, если он умирает, давать беглый экран «о»), но мне все равно придется вручную устанавливать и отключите DNS-сервер на моих сетевых адаптерах.

«Вручную» означает следующие команды dos IP-интерфейс netsh set dnsservers name = "{имя адаптера}" source = статический адрес = 127.0.0.1 основной ... IP-интерфейс netsh set dnsservers name = "{имя адаптера}" source = dhcp

Это плохо, конечно; что хорошего в том, чтобы запустить DNS-прокладку, если вы не можете получить ее, так сказать, в дверном косяке?

Решения, которые я изучаю: 1) Я мог бы просто заставить приложение tray запускать команду в cscript, которая получит список адаптеров из «netsh interface ip show interfaces», а затем выполнить команды регистрации по списку. Это кажется не элегантным.

2) Поймите, где я должен искать это в C ++; в частности, мне потребуется способ перечисления системных адаптеров, записи их конфигурации при запуске программы, перенаправления их DNS на 127.0.0.1 и последующего восстановления их конфигурации в конце программы.

Будет полезна стрелка в правильном направлении. Пример фрагмента, более того. Заранее спасибо!

1 Ответ

2 голосов
/ 20 октября 2010

Вы можете использовать WMI для настройки DNS на каждом интерфейсе. Это можно сделать с помощью метода EnableDNS или SetDNSServerSearchOrder класса Win32_NetworkAdapterConfiguration . Вы можете получить текущие настройки, используя свойство DNSServerSearchOrder. Ниже приведены несколько ресурсов.

http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/client/configuring/#EDNSANAdapters.htm

http://msdn.microsoft.com/en-us/library/aa394558(v=VS.85).aspx

http://technet.microsoft.com/en-us/library/ee692588.aspx

Примечание:

Если вы решите воспользоваться этим подходом, помните об известной проблеме с Windows XP. Это описано в статье KB .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...