2012-11-13 15 views
7

जब मैं अपने सर्वर डीएनएस मेरे नेटवर्क कार्ड की सेटिंग की DNSServerSearchOrder संपत्ति का उपयोग कर सेटिंग्स मिलता है, यह DNS सर्वर है कि यह स्वचालित रूप से ले कर जाता है देता है, बल्कि यह है कि होगा एक मूल्य की तुलना करने के लिए सेट कर दिया जाता कैसे जाँच करने के लिए इंगित करें कि यह गतिशील है (जैसे शून्य)।यदि DNS सर्वर 'स्वचालित रूप से प्राप्त'

उदाहरण के लिए, मेरे डीएनएस सर्वर स्थापित करने के लिए 'स्वचालित रूप से प्राप्त' के लिए मुझे क्या करना:

ManagementBaseObject newDNS = myNICManagementObject.GetMethodParameters("SetDNSServerSearchOrder"); 
newDNS["DNSServerSearchOrder"] = null; 
ManagementBaseObject setDNS = myNICManagementObject.InvokeMethod("SetDNSServerSearchOrder", newDNS, null); 

अब, मैं इस बात की पुष्टि करने के लिए इसे स्थापित किया गया था चाहते हैं के बाद मैं अन्य आदेश के साथ 'स्वचालित रूप से प्राप्त' के लिए यह निर्धारित किया है :

if(myNICManagementObject["DNSServerSearchOrder"] == null) 
{ 
    MessageBox.Show("DNS Servers Set to Dynamic!"); 
} 

हालांकि, उपरोक्त कोड अपेक्षा के अनुसार शून्य (न ही एक संदेशबॉक्स पॉप-अप) वापस नहीं करता है। इसके बजाय यह DNS सर्वर देता है जो गतिशील रूप से मेरे आईएसपी से बाहर निकलता है।

वहाँ प्रोग्राम के रूप में निर्धारित करने के लिए है कि मेरे डीएनएस सर्वर 'स्वचालित रूप से प्राप्त' की तैयारी में हैं एक तरीका है?

+0

में ईद संपत्ति के मूल्य से पहले मैं अपने प्रश्न पूछा मैं उस पोस्ट पढ़ सकते हैं और अब यह फिर से पढ़ें, लेकिन अभी भी कुछ भी है कि मेरे सवाल का जवाब कर सकते हैं – Micah

+1

नहीं दिख रहा है मैं भी यही सवाल है । मुझे लगता है कि इस जानकारी को पाने का एक तरीका होना चाहिए। आप 'netsh इंटरफ़ेस आईपी शो config' में टाइप तो आप देखेंगे, हैं netsh डीएनएस सर्वर के स्रोत को अलग करने में सक्षम है। मैं भी netsh से परिणाम को पार्स के बारे में सोचा है, लेकिन यह काम नहीं करता, अगर कोई खिड़कियों स्थापना जो एक और स्थानीयकरण पैकेज है ... – netblognet

उत्तर

4

एक ही रास्ता मैंने पाया रजिस्ट्री से पढ़ने के लिए है:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\\{Network_Adaptor_GUID}\NameServer 

हैं NameServer खाली है - तो डीएनएस गतिशील है, अन्यथा - स्थिर।

+0

यह खाली मैनुअल डीएनएस पते के लिए विफल रहता है के साथ अपने कार्यक्रम का उपयोग करता है। इस परिदृश्य में netsh सही ढंग से स्थिर (192.168.1.1) के रूप में विन्यास को पहचानती है। – Andrew

1

Vad का जवाब मुझे एक समाधान के लिए शिकार के लिए समय की एक टन बचा लिया। अगर कोई बहुत बुनियादी कार्यान्वयन देखना चाहता है तो यहां कुछ सी # है।

using Microsoft.Win32; 
//... 
private void DNSAutoOrStatic(string NetworkAdapterGUID) 
     { 
      string path = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\" + NetworkAdapterGUID; 
      string ns = (string)Registry.GetValue(path, "NameServer", null); 
      if (String.IsNullOrEmpty(ns)) 
      { 
       Console.WriteLine("Dynamic DNS"); 
      } 
      else 
      { 
       Console.WriteLine("Static DNS: " + ns); 
      } 
     } 

आप these examples के बाद नेटवर्क एडाप्टर GUID प्राप्त कर सकते हैं।

यह System.Net.NetworkInformation.NetworkInterface

संबंधित मुद्दे