如何以编程方式删除DNS域?

我正在构建一个C#web应用程序来管理我们的DNS服务器,并且使用WMI命名空间来处理所有事情。 我唯一遇到的问题是删除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被抓到“通用失败”。 我已经在线阅读了人们通过使用区域命名空间删除域的情况,但只有当您要删除的域是区域本身时才适用。 我需要删除不属于区域的域名。 谁能帮忙?


我还没有找到一种方法来使用WMI删除一个域,并且还检入了名为DNSShell的PowerShell管理单元,但它看起来不像是有一条删除域的命令。


您可以使用删除资源记录中的脚本DnsResource.vbs来尝试。 它只使用DNS WMI Provider。 因此,如果它适用于你的海豚,你可以在你的C#程序中做同样的事情。

你也可以考虑使用DnsModifyRecordsInSet。 在Windos SDK(C: Program Files Microsoft SDKs Windows v7.1 Samples netds dns modifyrecords)中,您可以在C ++中找到使用DnsModifyRecordsInSet 。 它演示了如何在DNS中添加记录。 如果您使用第二个参数pDeleteRecords而不是第一个pAddRecords您将能够删除DNS中的任何记录。

链接地址: http://www.djcxy.com/p/3191.html

上一篇: How Do I Delete a DNS Domain Programmatically?

下一篇: How do I instruct SQLAlchemy to create SQLite FTS3 tables on create