Как удалить домен DNS программным способом? - PullRequest
7 голосов
/ 12 октября 2010

Я создаю веб-приложение на C # для управления нашими 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 было обнаружено "Общий сбой". Я читал в Интернете, где люди удаляют домены, используя пространство имен зоны, но это работает, только если домен, который вы хотите удалить, является самой зоной. Мне нужно удалить домены, которые не являются зонами. Кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Я не нашел способа удалить домен с помощью WMI, а также зарегистрировался в оснастке Powershell под названием DNSShell, но не похоже, что есть команда для удаления домена.

1 голос
/ 18 октября 2010

Вы можете попробовать с помощью сценария DnsResource.vbs из Удалить запись ресурса . Используется только провайдер DNS WMI. Поэтому, если это сработает для вашей свиньи, вы можете сделать то же самое в вашей программе на C #.

Вы также можете использовать DnsModifyRecordsInSet . В Windos SDK (C: \ Program Files \ Microsoft SDK \ Windows \ v7.1 \ Samples \ netds \ dns \ modifyrecords) вы можете найти пример в C ++, в котором используется DnsModifyRecordsInSet. Это демонстрирует, как добавить запись в DNS. Если вы используете второй параметр pDeleteRecords вместо первого pAddRecords, вы сможете удалить любую запись в DNS.

...