高手过招:如何在VB中实现改变DNS解析地址-->>

tokyfeng228 2006-01-19 02:32:18
如何用VB6实现将 本机 DNS www.abc.com 的IP解析改为 127.0.0.1
...全文
206 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
喝醉的咖啡 2006-01-22
>只是临时修改本机的DNS,应该不是太难吧或者有没有什么DOS命令可以调用修改?

这么看来,你的意思是改本机的 IP 设置的 DNS 项为某个 DNS ?
你要的 DOS 命令:
netsh interface ip set dns name="本地连接" source=static addr=你的DNSIP register=PRIMARY

另,我估计 Win98 下也没有这个命令。
同样,编码实现相应的功能不妨查阅 MSDN 中 WNET 相关的 API,能实现。只是同样在Windows2000以上才有这个dll库。对应有一些比较老一些的API,只是太久没接触,不记得了。
回复
喝醉的咖啡 2006-01-22
又晕

>修改C:\WINDOWS\system32\drivers\etc\hosts文件即可
>>这个对98系统有用吗?

看看
>>如何用VB6实现将 本机 DNS www.abc.com 的IP解析改为 127.0.0.1

请问你是要把本机对 www.abc.com 的 IP 解析结果变成 127.0.0.1 么?
如果是,改 hosts 文件,否则改你的 网卡设置的 DNS 为某个恰当的 DNS Server——当然,在这个 DNS Server 上必须把 www.abc.com 解析到 127.0.0.1,不会有 DNS 这么做,除非是你自己设置的

如果不是,那你的意思是本机就是 DNS Server?你想用 VB 控制你的 DNS Server?不妨看看 DNS 协议。
回复
cexoyq 2006-01-22
转自MSDN。使用WMI管理服务器,支持win2000以上。不支持98,nt 链接:http://www.microsoft.com/china/technet/community/scriptcenter/network/scrnet116.mspx

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objNetCard in colNetCards
arrDNSServers = Array("192.168.1.100", "192.168.1.200")
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next
回复
tokyfeng228 2006-01-19
修改C:\WINDOWS\system32\drivers\etc\hosts文件即可

这个对98系统有用吗?
回复
hhjjhjhj 2006-01-19
修改C:\WINDOWS\system32\drivers\etc\hosts文件即可
回复
tokyfeng228 2006-01-19
只是临时修改本机的DNS,应该不是太难吧或者有没有什么DOS命令可以调用修改?
回复
zyl910 2006-01-19
看错了


我记得DNS服务是固定端口号的

先调用IP Helper API查找提供DNS服务的进程,然后Hook该进程的Winsock API,自己处理封包内容。

技术难关:
1.API Hook技术是非常复杂的
2.自己处理封包内容?!那相当于自己写一个DNS服务器了
3.VB只能编译ActiveX dll,而且存在多线程冲突问题,写进程注入程序很麻烦的

回复
zyl910 2006-01-19
1.用Winsock控件去连接www.abc.com,连接上以后自然可以得到对方的IP了(RemoteHostIP属性)

2.发送ICMP封包,这是最标准的办法,需要对TCP/IP协议族有很深的认识
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告