【发布时间】:2011-11-03 16:13:04
【问题描述】:
在 Windows 中,是否有用于检索 DNS 缓存内容的 API。我的一所大学问了我这个问题,但到目前为止,我已经在 MSDN 上查看并搜索了网络,但我找不到任何关于此的信息。他目前的解决方案是解析 ipconfig /displaydns 的输出,但我确信有更好的方法来做到这一点。 ipconfig 如何读取缓存中的内容?
【问题讨论】:
在 Windows 中,是否有用于检索 DNS 缓存内容的 API。我的一所大学问了我这个问题,但到目前为止,我已经在 MSDN 上查看并搜索了网络,但我找不到任何关于此的信息。他目前的解决方案是解析 ipconfig /displaydns 的输出,但我确信有更好的方法来做到这一点。 ipconfig 如何读取缓存中的内容?
【问题讨论】:
使用DNS_QUERY_NO_WIRE_QUERY 查询选项调用的DnsQuery 函数允许您在缓存中查找特定条目。这可能就足够了,具体取决于您要执行的操作。似乎没有任何记录的方式来枚举条目。
查看 ipconfig.exe 似乎它使用了几个未记录的函数,特别是 DnsGetCacheDataTable。对此函数名称的 Google 搜索产生了this code,这似乎有效,除了需要更正一行;将 typedef 更改为:
typedef int(WINAPI *DNS_GET_CACHE_DATA_TABLE)(PDNSCACHEENTRY);
【讨论】: