2010-10-12 4 views
7

मैं अपने DNS सर्वर को प्रबंधित करने के लिए एक सी # वेब ऐप बना रहा हूं और सबकुछ के लिए WMI नेमस्पेस का उपयोग कर रहा हूं। एकमात्र चीज जिसमें मुझे परेशानी हो रही है वह DNS डोमेन को हटा रहा है। यहां मेरा कोड है:मैं एक DNS डोमेन प्रोग्रामेटिक रूप से कैसे हटा सकता हूं?

internal static bool DeleteDomainFromDns(string DnsServerName, string ContainerName, string Name) 
    { 
     try 
     { 
      string Query = "SELECT * FROM MicrosoftDNS_Domain WHERE DnsServerName = '" + DnsServerName + "' AND ContainerName = '" + ContainerName + "' AND Name = '" + Name + "'"; 
      ObjectQuery qry = new ObjectQuery(Query); 
      DnsProvider dns = new DnsProvider(); 
      ManagementObjectSearcher s = new ManagementObjectSearcher(dns.Session, qry); 
      ManagementObjectCollection col = s.Get(); 
      dns.Dispose(); 

      foreach (ManagementObject obj in col) 
      { 
       obj.Delete(); //Exception occurs here 
      } 
      return true; 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 

मुझे जो त्रुटि मिलती है वह है: प्रबंधन अपवाद "जेनेरिक असफलता" पकड़ा गया था। मैंने ऑनलाइन पढ़ा है जहां लोग ज़ोन नेमस्पेस का उपयोग कर डोमेन हटा रहे हैं, लेकिन यह केवल तभी काम करता है जब आप जिस डोमेन को हटाना चाहते हैं वह एक ज़ोन है। मुझे उन डोमेन को हटाना होगा जो ज़ोन नहीं हैं। क्या कोई मदद कर सकता है?

+0

क्या आप वाकई इसे 'डीएनएसप्रोवाइडर' उदाहरण को फिर से शुरू करने से पहले निपट सकते हैं? – leppie

+0

हां, दो कारणों से। मैं उस बिंदु से पहले इसका उपयोग नहीं करता हूं और क्योंकि मैं अपने सभी DNS हटाने विधियों के लिए ऐसा करता हूं। – mcass20

उत्तर

2

मुझे डब्लूएमआई का उपयोग करके डोमेन को हटाने का कोई तरीका नहीं मिला है और डीएनएसएसएचएल नामक पावरहेल स्नैपिन में भी चेक किया गया है लेकिन ऐसा लगता है कि डोमेन को हटाने के लिए कोई आदेश नहीं है।

+0

@RJ: जितना मैं अपने जवाब को स्वीकार नहीं करना चाहते हैं, ऐसा लगता है कि आप सही उत्तर के सबसे करीब आ गए हैं। – mcass20

1

आप Delete a Resource Record से स्क्रिप्ट DnsResource.vbs के साथ प्रयास कर सकते हैं। यह केवल DNS डब्लूएमआई प्रदाता का उपयोग करता है। तो अगर यह आपके वृश्चिक के लिए काम करेगा तो आप अपने सी # कार्यक्रम में भी ऐसा ही कर सकते हैं।

आप DnsModifyRecordsInSet का उपयोग करने पर भी विचार कर सकते हैं। विंडोस एसडीके (सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v7.1 \ नमूने \ netds \ dns \ modifiedrecords) में आप सी ++ में एक उदाहरण पा सकते हैं जो DnsModifyRecordsInSet का उपयोग करता है। यह दर्शाता है कि DNS में रिकॉर्ड कैसे जोड़ना है। यदि आप पहले pAddRecords के बजाय दूसरे पैरामीटर pDeleteRecords का उपयोग करते हैं तो आप DNS में किसी भी रिकॉर्ड को हटाने में सक्षम होंगे।

+0

कोशिश करने के लिए धन्यवाद लेकिन मुझे संसाधन रिकॉर्ड हटाने में कोई समस्या नहीं है। मुझे डोमेन हटाने में समस्या आ रही है। – mcass20

+0

@ mcass20: संसाधन प्रकार 'DNS_RECORD' struct से किसी भी हो सकता है (http://msdn.microsoft.com/en-us/library/ms682082(VS.85).aspx देखें) समावेशी 'ए' रिकॉर्ड ' एन एस 'रिकॉर्ड और' CNAME 'रिकॉर्ड या कभी कभी' एमएक्स 'रिकॉर्ड और' एसओए 'recored ज्यादातर (http://manual.intl.indoglobal.com/ch03s05.html देखें) एक उप डोमेन परिभाषित किया जाता है जो। बस DNS सर्वर के रूप में देखने के लिए कैसे उपडोमेन अपने वातावरण में परिभाषित किया गया है और इसी रिकॉर्ड हटाएं। – Oleg

+0

आपको पुन: धन्यवाद जानकारी के लिए, तथापि, डोमेन रिकॉर्ड को हटाने डोमेन कंटेनर ही जो यहाँ मेरा लक्ष्य है नहीं हटाता है। – mcass20

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