我想在Microsoft的DNS服务器中创建一个别名记录,将AliasA指向ComputerA。我该如何以编程方式执行此操作?
答案 0 :(得分:2)
我使用WMI来做这件事,在网上找到了一个例子,这就是它的样子。
private ManagementScope _session = null;
public ManagementPath CreateCNameRecord(string DnsServerName, string ContainerName, string OwnerName, string PrimaryName)
{
_session = new ManagementScope("\\\\" + DnsServerName+ "\\root\\MicrosoftDNS", con);
_session.Connect();
ManagementClass zoneObj = new ManagementClass(_session, new ManagementPath("MicrosoftDNS_CNAMEType"), null);
ManagementBaseObject inParams = zoneObj.GetMethodParameters("CreateInstanceFromPropertyData");
inParams["DnsServerName"] = ((System.String)(DnsServerName));
inParams["ContainerName"] = ((System.String)(ContainerName));
inParams["OwnerName"] = ((System.String)(OwnerName));
inParams["PrimaryName"] = ((System.String)(PrimaryName));
ManagementBaseObject outParams = zoneObj.InvokeMethod("CreateInstanceFromPropertyData", inParams, null);
if ((outParams.Properties["RR"] != null))
{
return new ManagementPath(outParams["RR"].ToString());
}
return null;
}
答案 1 :(得分:0)
我认为.NET没有任何东西可以提供对这些内容的访问(我可以通过一些快速搜索找到对专有库,控件等的引用),所以你可能不得不使用Win32 API通过P / Invoke(虽然另一种可能性是通过WMI完成工作)。
您从DnsAcquireContextHandle
开始,然后(可能)DnsQuery
获取当前记录集,修改其内容以添加新别名DnsReplaceRecordSet
以使DNS服务器使用新的记录集,最后DnsReleaseContextHandle
关闭了。
当然,您需要在服务器上拥有正确的权限,否则这些权限都不会起作用。