【发布时间】:2010-10-18 00:26:49
【问题描述】:
我正在用 C++ 为 Win XP/7 编写一个小托盘应用程序,目标是只要应用程序正在运行,http://*.dev 就会指向http://localhost。
这是 XAMPP/WAMP 模块的一部分,允许在 localhost 上以目录命名的虚拟域(例如,http://test.dev/index.php 将映射到 G:\xampp\virtual\test\index.php)
其中一部分是在所有适配器上将 posadis 作为 DNS shim 运行。我有托盘图标工作,以及它的基本功能(启动时启动 posadis,退出时终止,监视 posadis 进程并在它死时关闭,给出一个粗略的“关于”屏幕),但我仍然必须手动设置并取消设置我的网络适配器上的 DNS 服务器。
“手动”表示以下dos命令 netsh interface ip set dnsservers name="{adapter name}" source=static address=127.0.0.1 primary ... netsh interface ip set dnsservers name="{adapter name}" source=dhcp
当然,这很糟糕;如果您无法将 DNS shim 放入门框,那么运行它有什么好处?
我正在研究的解决方案: 1)我可以让托盘应用程序在 cscript 中运行一个命令,该命令将从“netsh interface ip show interfaces”获取适配器列表,然后在列表上运行注册命令。这似乎不优雅。
2) 找出我应该在 C++ 中寻找的地方;具体来说,我需要一种方法来枚举系统的适配器,在程序启动时记录它们的配置,将它们的 DNS 定向到 127.0.0.1,然后在程序结束时恢复它们的配置。
正确方向的箭头会很有帮助。还有一个例子 sn-p。提前致谢!
【问题讨论】:
标签: c++ networking dns