开发者

How Do I Delete a DNS Domain Programmatically?

开发者 https://www.devze.com 2023-01-19 13:34 出处:网络
I am building a C# web app to manage our DNS servers and am using the WMI Namespace for everything. The only thing I am having trouble with is deleting DNS Domains. Here is my code:

I am building a C# web app to manage our DNS servers and am using the WMI Namespace for everything. The only thing I am having trouble with is deleting DNS Domains. Here is my code:

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

The error I get is: ManagementException was caught "Generic Failure". I've read online where people are deleting domains by using the zone namespace but that only works if the domain you want to delete is a zone itself. I need to delete domains that are not zones. Can anyone help?


I have not found a way to delete a domain using WMI and also checked into a Powershell snapin called DNSShell but it doesn't look like there is a command to delete the domain.


You can try with the script DnsResource.vbs from Delete a Resource Record. It uses only DNS WMI Provider. So if it will work for your porpoise you can do the same in your C# program.

You can also consider to use DnsModifyRecordsInSet. In Windos SDK (C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\netds\dns\modifyrecords) you can find an example in C++ which use DnsModifyRecordsInSet. It demonstrate how to add a record in the DNS. If you use the second parameter pDeleteRecords instead of the first pAddRecords you will be able to delete any record in the DNS.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号