在Windows TCP/IP中编程更改NameServer

3
我正在构建一个VPN应用程序,需要通过编程方式设置DNS服务器。我在注册表(在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces 中)更改NameServer参数以在现有条目列表的前面添加名称服务器。一旦我这样做了,如果我尝试使用nslookup查找主机名,它可以正常工作,但是ping在15分钟内无法解析该名称。15分钟后,ping也能够解析名称。我尝试了自己的小型TCP/IP应用程序,发现它也有相同的问题。我查看了wireshark中的流量,发现nslookup正在发送DNS查找请求,而ping没有发送。

是否有任何方法可以让Windows更早地注意到名称服务器?或者在Windows中设置名称服务器有更好的方法吗?

感谢您提前的帮助!

1个回答

4

不要直接更改注册表键。正如您所发现的那样,它不会通知DNS客户端名称服务器已更改。

最简单的解决方案可能是%SystemRoot%\system32\netsh.exe

netsh interface ip set dns name="Local Area Connection" source=static addr=...

谢谢。这个命令中的静态是仅适用于静态接口还是也可以用于基于DHCP的接口?理想情况下,我希望能够将名称服务器添加到DHCP服务器提供的服务器列表中。我已经查看了netsh文档,但它有点模糊不清。再次感谢您。 - user128602

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接