2010-10-12 11 views
7

DNS 서버를 관리하기 위해 C# 웹 응용 프로그램을 만들고 모든 것에 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; 
     } 
    } 

오류 : ManagementException이 (가) "Generic Failure"라는 오류가 발생했습니다. 사람들이 영역 네임 스페이스를 사용하여 도메인을 삭제하는 온라인을 읽었지만 삭제하려는 도메인이 영역 자체 인 경우에만 작동합니다. 영역이 아닌 도메인을 삭제해야합니다. 누구든지 도와 줄 수 있습니까?

+0

반복하기 전에 해당'DnsProvider' 인스턴스를 처리 할 수 ​​있습니까? – leppie

+0

예, 두 가지 이유가 있습니다. 나는 그 시점을 지나서 그것을 사용하지 않으며 모든 DNS 삭제 방법에 대해 그렇게하기 때문에. – mcass20

답변

2

WMI를 사용하여 도메인을 삭제하는 방법을 찾지 못했고 DNSShell이라는 Powershell 스냅인도 확인했지만 도메인 삭제 명령이없는 것 같습니다.

+0

@RJ : 나는 당신의 대답을 받아들이고 싶지 않다. 당신이 정답에 가장 가까운 것처럼 보입니다. – mcass20

1

Delete a Resource Record의 DnsResource.vbs 스크립트로 시도 할 수 있습니다. DNS WMI 공급자 만 사용합니다. 그래서 당신의 돌고래에서 효과가 있다면 C# 프로그램에서도 똑같이 할 수 있습니다.

DnsModifyRecordsInSet도 고려해 볼 수 있습니다. Windos SDK (C : \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ netds \ dns \ modifyrecords)에서는 DnsModifyRecordsInSet을 사용하는 C++의 예제를 찾을 수 있습니다. DNS에 레코드를 추가하는 방법을 보여줍니다. 첫 번째 pAddRecords 대신 두 번째 매개 변수 pDeleteRecords을 사용하면 DNS의 레코드를 삭제할 수 있습니다.

+0

시도해 주셔서 감사하지만 리소스 레코드를 삭제하는 데 문제가 없습니다. 도메인을 삭제하는 데 문제가 있습니다. – mcass20

+0

@ mcass20 : 자원 유형은 'DNS_RECORD' 구조체 (http://msdn.microsoft.com/en-us/library/ms682082(VS.85).aspx 참조)의'A '레코드, NS '레코드와'CNAME '레코드 또는 때로는'MX '레코드와'SOA '가 포함되어 있으며 대부분 하위 도메인을 정의하는 데 사용됩니다 (http://manual.intl.indoglobal.com/ch03s05.html 참조). 사용자 환경에서 하위 도메인이 정의 된 방법을 DNS 서버로보고 해당 레코드를 삭제하십시오. – Oleg

+0

통찰력으로 다시 한번 감사 드리지만 도메인의 레코드를 삭제해도 여기 내 목표 인 도메인 컨테이너 자체는 삭제되지 않습니다. – mcass20

관련 문제