我具有用于更改DNS的此功能:

/**
 * Change dns
 *
 * @param bool
 */

private void changeDns(bool develop)
{
    ManagementClass mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection mObjCol = mClass.GetInstances();

    foreach (ManagementObject mObj in mObjCol)
    {
        if ((bool) mObj["IPEnabled"])
        {
            ManagementBaseObject mboDNS = mObj.GetMethodParameters("SetDNSServerSearchOrder");

            if (mboDNS != null)
            {
                if (develop == true)
                {
                    // Set dns
                    mboDNS["DNSServerSearchOrder"] = this.dnsServer;

                    // Log info
                    foreach (String dns in this.dnsServer) {

                        this.addLog(dns, "DNS servers change to:", Color.Green);

                    }
                }
                else
                {
                    // Set dns
                    mboDNS["DNSServerSearchOrder"] = null;

                    // Log info
                    this.addLog("DHCP", "DNS servers change to:", Color.Green);
                }

                // Change dns
                mObj.InvokeMethod("SetDNSServerSearchOrder", mboDNS, null);
            }
        }
    }
}


但是现在我需要另一种方式。如何获得Win32的DNS?

我尝试了this code from MSDN,但它返回了大约10个结果。

最佳答案

答案是:

    NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    foreach (NetworkInterface ni in nics)
    {
        if (ni.OperationalStatus == OperationalStatus.Up)
        {
            IPAddressCollection ips = ni.GetIPProperties().DnsAddresses;
            foreach (System.Net.IPAddress ip in ips)
            {
                MessageBox.Show(ip.ToString());
            }
        }
    }

10-04 16:37
查看更多