C#如何在不使用WMI的情况下查询Windows DNS服务器上的R记录

C#如何在不使用WMI的情况下查询Windows DNS服务器上的R记录,c#,.net,dns,C#,.net,Dns,有没有一种方法可以让我在Dns服务器上搜索记录,而不用WMI使用.NET 4,5连接到Dns服务器 我在.NET4.5中完全可以使用Wmi,但发现它太慢了(即使在缓存连接时)。这太不一致了。有些搜索查询时间为2秒,而有些则超过100秒 就我所知,我无法进一步优化查询 Query: string query = "SELECT * FROM " + propertiesStruct.Table + " WHERE ContainerName = '" + domain + "' AND Owne

有没有一种方法可以让我在Dns服务器上搜索记录,而不用WMI使用.NET 4,5连接到Dns服务器

我在.NET4.5中完全可以使用Wmi,但发现它太慢了(即使在缓存连接时)。这太不一致了。有些搜索查询时间为2秒,而有些则超过100秒

就我所知,我无法进一步优化查询

Query:  string query = "SELECT * FROM " + propertiesStruct.Table + " WHERE ContainerName = '" + domain + "' AND OwnerName ='" + name + "." + domain + "'";
因此,我正在寻找一种连接到dns服务器的方法,按名称和域查询dns记录,并尽可能返回与WMI查询相同/相似的数据

我查看了.NET 4.5 System.NET.Dns类和方法,但发现它没有提供足够的信息。()

我希望得到的信息是:例如-

DNS记录fqdn-stackoverflow.com

DNS记录名称-堆栈溢出

DNS域/区域-com

DNS记录值-198.252.206.140

DNS记录类型-A/AAAA/CNAME/PTR

DNS记录ttl-3600

即使它返回具有相同fqdn但值不同的所有记录(因为它是不同的记录类型),也可以手动筛选结果以查找类型

我发现最近的一件事是Linux挖掘,但这必须在windows服务器上的.net中完成


谢谢

如果您可以使用p/invoke,那么就有DNSAPI库/DLL。看见一些选项建议DnsQuery方法可以使用dns缓存,也可以关闭缓存的使用。我已经成功地使用了这个API,但是我们警告说,它的级别非常低。例如,如果要执行反向查找,可能必须显式地组装查询(即,对于192.168.0.1,使用PTR类型的查询“1.0.168.192.in addr.arpa”)