2013-03-17 41 views
2

我有這個功能改變DNS:找我的實際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個結果。

回答

0

答案是:

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()); 
      } 
     } 
    }