我正在构建一个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被捕获“通用失败”。我已经在线阅读了人们使用区域命名空间删除域名的情况,但只有在您要删除的域名是区域本身时才有效。我需要删除不是区域的域。有人可以帮忙吗?
答案 0 :(得分:2)
我还没有找到使用WMI删除域的方法,也检查了一个名为DNSShell的Powershell管理单元,但看起来没有删除域的命令。
答案 1 :(得分:1)
您可以尝试使用Delete a Resource Record中的脚本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中的任何记录。