2010-10-18 24 views
1

我正在用Win XP/7編寫C++的小托盤應用程序,目標是隻要應用程序正在運行,http:// *。 dev會指向http://localhost需要在C++中設置所有接口上的DNS服務器

這是一個模爲XAMPP/WAMP以允許在localhost目錄命名虛擬域的一部分(因此,例如,http://test.dev/index.php將映射到G:\ XAMPP \虛擬\測試\的index.php)

其中一部分是在所有適配器上運行posadis作爲DNS墊片。我有托盤圖標以及其基本功能(啓動時啓動posadis,退出時終止,監視posadis進程並關閉它是否死掉,給出一個粗略的「關於」屏幕),但我仍然需要手動設置並在我的網絡適配器上取消設置DNS服務器。

「手動」 指的是下述的DOS命令 netsh接口IP dnsservers名稱= 「{適配器名稱}」 源=靜態地址127.0.0.1 =初級 ... netsh接口IP dnsservers名稱=「{適配器name}「source = dhcp

這當然不好;可以說,如果你無法將它放在門邊框中,那麼運行DNS墊片有什麼好處呢?

我正在調查的解決方案: 1)我可以讓托盤應用程序在cscript中運行一個命令,從「netsh interface ip show interfaces」中獲取適配器列表,然後在列表中運行註冊命令。這似乎不雅。 2)找出我應該在C++中做什麼的地方;具體來說,我需要一種方法來枚舉系統的適配器,在程序啓動時記錄它們的配置,將它們的DNS指向127.0.0.1,並稍後在程序結束時恢復它們的配置。

箭頭正確的方向將是有益的。一個例子片斷,更多。提前致謝!

回答

2

您可以使用WMI在每個接口上配置DNS。您可以使用Win32_NetworkAdapterConfiguration類的EnableDNSSetDNSServerSearchOrder方法執行此操作。您可以使用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文章中有所描述。

+0

哦,甜的!我現在不能玩,但只要有空閒時間,我會試試這個。 – Fordi 2010-10-20 18:33:41

相關問題