2

我希望能够通过标签显示当前首选 DNS 和备用 DNS 是什么。

我该怎么做?

我已经调查过了,看来我必须使用

管理对象搜索器?使用 WMI?

就像是?

ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_NetworkAdapter Where AdapterType='DnsForestName'");
foreach (ManagementObject mo in mos.Get())
{
    label1.Text = mos.ToString();
}
4

2 回答 2

1

I was able to do what I wanted with this code.

    private void Form1_Load(object sender, EventArgs e)
    {
        NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface adapter in adapters)
        {

            IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
            IPAddressCollection dnsServers = adapterProperties.DnsAddresses;
            if (dnsServers.Count > 0)
            {
                Console.WriteLine(adapter.Description);
                foreach (IPAddress dns in dnsServers)
                {
                    label4.Text = dns.ToString();
                }

            }
        }
    }
于 2014-09-16T23:12:12.627 回答
1

您可能想看看以下 -IPInterfaceProperties.DnsAddresses财产

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipinterfaceproperties.dnsaddresses(v=vs.110).aspx

该文档有一个很好的示例,说明了如何枚举所有网络接口及其 DNS IP 地址。但就像我在对您的问题的评论中所说的那样。如果您有多个网络接口,则必须定义选择标准你感兴趣的那个。。

请注意,我不能 100% 确定此属性返回 DnsAddresses 的顺序是主要 Dns,然后是 0 个或更多次要的 Dns。我猜是这种情况,但没有我知道的文档,这将确认该假设。

于 2014-09-16T22:21:53.683 回答