【问题标题】:Retrieving what's in the DNS cache检索 DNS 缓存中的内容
【发布时间】:2011-11-03 16:13:04
【问题描述】:

在 Windows 中,是否有用于检索 DNS 缓存内容的 API。我的一所大学问了我这个问题,但到目前为止,我已经在 MSDN 上查看并搜索了网络,但我找不到任何关于此的信息。他目前的解决方案是解析 ipconfig /displaydns 的输出,但我确信有更好的方法来做到这一点。 ipconfig 如何读取缓存中的内容?

【问题讨论】:

    标签: windows caching dns


    【解决方案1】:

    使用DNS_QUERY_NO_WIRE_QUERY 查询选项调用的DnsQuery 函数允许您在缓存中查找特定条目。这可能就足够了,具体取决于您要执行的操作。似乎没有任何记录的方式来枚举条目。

    查看 ipconfig.exe 似乎它使用了几个未记录的函数,特别是 DnsGetCacheDataTable。对此函数名称的 Google 搜索产生了this code,这似乎有效,除了需要更正一行;将 typedef 更改为:

    typedef int(WINAPI *DNS_GET_CACHE_DATA_TABLE)(PDNSCACHEENTRY);
    

    【讨论】:

    • 非常感谢,非常感谢。只是一个简单的问题,你用什么来查看 ipconfig 调用的内容?只是想知道这是如何完成的,因为我尝试使用 windbg 在 ipconfig 上做同样的事情但失败了。
    • 我采取了简单的方法:我使用 MS 的 strings.exe 查看了可执行文件中出现的字符串。大多数时候,您可以通过这种方式看到从可执行文件调用的任何 DLL 函数。然后,只需有根据地猜测哪些可能是相关的。
    • 你也可以使用depends.exe来查看一个exe从其他dll中导入和使用了哪些函数
    • 很棒的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2012-06-04
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2013-06-24
    相关资源
    最近更新 更多