【问题标题】:How Do I Delete a DNS Domain Programmatically?如何以编程方式删除 DNS 域?
【发布时间】:2011-04-24 10:44:23
【问题描述】:

我正在构建一个 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 被捕获“通用故障”。我已经在网上阅读了人们使用区域命名空间删除域的信息,但这仅在您要删除的域是区域本身时才有效。我需要删除不是区域的域。有人可以帮忙吗?

【问题讨论】:

  • 您确定可以在迭代之前处理掉那个DnsProvider 实例吗?
  • 是的,有两个原因。在那之后我不会使用它,因为这是我对所有 DNS 删除方法都使用它的方式。

标签: c# .net dns wmi


【解决方案1】:

我还没有找到使用 WMI 删除域的方法,并且还检查了一个名为 DNSShell 的 Powershell 管理单元,但看起来没有删除域的命令。

【讨论】:

  • @RJ:虽然我不想接受你的答案,但看起来你已经最接近正确答案了。
【解决方案2】:

您可以尝试使用来自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 中添加记录。如果您使用第二个参数 pDeleteRecords 而不是第一个 pAddRecords,您将能够删除 DNS 中的任何记录。

【讨论】:

  • 感谢您的尝试,但我在删除资源记录时没有任何问题。我在删除域时遇到问题。
  • @mcass20:资源类型可以是来自DNS_RECORD 结构(参见msdn.microsoft.com/en-us/library/ms682082(VS.85).aspx)的任何类型,包括“A”记录、“NS”记录和“CNAME”记录,有时也可以是“MX”记录和记录的“SOA”主要用于定义子域(参见manual.intl.indoglobal.com/ch03s05.html)。只需查看 DNS Server 在您的环境中如何定义子域并删除相应的记录。
  • 再次感谢您的洞察,但是,删除域中的记录并不会删除域容器本身,这是我的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多