2014-09-16 5 views
1

레이블을 통해 현재 선호 DNS 및 대체 DNS가 무엇인지를 보여주고 싶습니다.레이블에 기본 DNS 및 대체 DNS 표시

어떻게하면됩니까?

나는 그것으로 검토 한 결과 내가

ManagementObjectSearcher를 사용해야 할 것 같습니다? WMI 사용?

ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_NetworkAdapter Where AdapterType='DnsForestName'"); 
foreach (ManagementObject mo in mos.Get()) 
{ 
    label1.Text = mos.ToString(); 
} 
당신은 다음과 같은보고 할 수 있습니다
+0

어떤 연결에 대해 DNS 주소를 가져 왔는지 상관하지 않습니까? 예 : 케이블 또는 와이파이? – HABO

+0

예 기본 DNS 또는 대체 DNS를 원합니다. – Billyhoe5

+0

코드가 실행될 시스템이 하나의 네트워크 인터페이스 만 가질 것이라고 가정하는 것이 안전합니까? 두 개 이상의 네트워크 인터페이스가있을 수 있다면 가장 먼저 올바른 네트워크 인터페이스를 선택하기위한 기준은 무엇입니까? –

답변

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 또는 그 이상의 보조 이름이 뒤 따른다. 나는 그런 경우를 추측하고 있지만 내가 아는 문서는 없다는 가정을 확인할 것입니다.

+0

대체 주문 우선입니다 :) 고마워요. – Billyhoe5

2

나는이 코드로 내가 원하는 것을 할 수 있었다.

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

      } 
     } 
    }