C# 在C中创建DNS NSRecord#

C# 在C中创建DNS NSRecord#,c#,dns,C#,Dns,我尝试通过创建DNS NSRecord。 下面是我的示例代码 如何设置NSRecord的IP地址?我知道输入IP是NSRecord所必需的 ManagementScope WmiScope = new ManagementScope("\\\\" + System.Environment.MachineName + "\\ROOT\\MicrosoftDNS"); ManagementPath path = new ManagementPath("MicrosoftDNS_NSType"

我尝试通过创建DNS NSRecord。 下面是我的示例代码

如何设置NSRecord的IP地址?我知道输入IP是NSRecord所必需的

    ManagementScope WmiScope = new ManagementScope("\\\\" + System.Environment.MachineName + "\\ROOT\\MicrosoftDNS");
ManagementPath path = new ManagementPath("MicrosoftDNS_NSType");
ManagementClass zone = new ManagementClass(WmiScope, path, null);
ManagementBaseObject p = zone.GetMethodParameters("CreateInstanceFromPropertyData");


p.Properties["DnsServerName"].Value = WmiScope.Path.Server;
p.Properties["ContainerName"].Value = "mydomain.com";
p.Properties["OwnerName"].Value = "";
p.Properties["NSHost"].Value = "ns1.domain.com";
zone.InvokeMethod("CreateInstanceFromPropertyData", p, null);

从技术上讲,域的NS记录不包含IP地址,它是授权记录,告诉请求NS记录的“任何人”,域的所有NS记录

NS记录标识DNS服务器的名称,而不是IP地址。


从技术上讲,域的NS记录不包含IP地址,它是授权记录,告诉“任何人”请求NS记录,域的所有NS记录

NS记录标识DNS服务器的名称,而不是IP地址。


旧思路,但我正在努力解决这个问题,也许这会对某人有所帮助

虽然不需要NSRecord的IP地址,但Microsoft DNS实际上会为该NSRecord创建主机(a)粘合记录。通过在委派区域中有一个粘合记录,不必查找该NSRecord的地址,就可以节省一个步骤(稍微快一点)

    ManagementScope WmiScope = new ManagementScope("\\\\" + System.Environment.MachineName + "\\ROOT\\MicrosoftDNS");
ManagementPath path = new ManagementPath("MicrosoftDNS_NSType");
ManagementClass zone = new ManagementClass(WmiScope, path, null);
ManagementBaseObject p = zone.GetMethodParameters("CreateInstanceFromPropertyData");


p.Properties["DnsServerName"].Value = WmiScope.Path.Server;
p.Properties["ContainerName"].Value = "mydomain.com";
p.Properties["OwnerName"].Value = "";
p.Properties["NSHost"].Value = "ns1.domain.com";
zone.InvokeMethod("CreateInstanceFromPropertyData", p, null);

遗憾的是,现在已经浪费了几个小时,似乎没有使用WMI添加粘合记录的方法。

旧线程,但我正在努力解决这个问题,也许这会对某人有所帮助

虽然不需要NSRecord的IP地址,但Microsoft DNS实际上会为该NSRecord创建主机(a)粘合记录。通过在委派区域中有一个粘合记录,不必查找该NSRecord的地址,就可以节省一个步骤(稍微快一点)

    ManagementScope WmiScope = new ManagementScope("\\\\" + System.Environment.MachineName + "\\ROOT\\MicrosoftDNS");
ManagementPath path = new ManagementPath("MicrosoftDNS_NSType");
ManagementClass zone = new ManagementClass(WmiScope, path, null);
ManagementBaseObject p = zone.GetMethodParameters("CreateInstanceFromPropertyData");


p.Properties["DnsServerName"].Value = WmiScope.Path.Server;
p.Properties["ContainerName"].Value = "mydomain.com";
p.Properties["OwnerName"].Value = "";
p.Properties["NSHost"].Value = "ns1.domain.com";
zone.InvokeMethod("CreateInstanceFromPropertyData", p, null);

遗憾的是,现在已经浪费了几个小时,似乎没有使用WMI添加粘合记录的方法。

我意识到这是一篇非常古老的文章(4年多了),但是有一种方法可以为使用WMI的名称服务器添加IP地址。正如我上面的JayroGreybeard所说,您需要为每个名称服务器添加一个粘合记录

粘合记录是资源记录,您可以使用“CreateInstanceFromTextRepresentation”(管理路径为“MicrosoftDNS_ResourceRecord”)添加它

需要用于粘合记录的“TextRepresentation”是{IP}中的{hostname}。例如:“ns1.example.com。在127.0.0.1'中。如示例所示,确保主机名以点('.')结尾


有关“CreateInstanceFromTextRepresentation”方法的更多信息可以在这里找到:

我意识到这是一篇非常古老的文章(4年多了),但是有一种方法可以为使用WMI的命名服务器添加IP地址。正如我上面的JayroGreybeard所说,您需要为每个名称服务器添加一个粘合记录

粘合记录是资源记录,您可以使用“CreateInstanceFromTextRepresentation”(管理路径为“MicrosoftDNS_ResourceRecord”)添加它

需要用于粘合记录的“TextRepresentation”是{IP}中的{hostname}。例如:“ns1.example.com。在127.0.0.1'中。如示例所示,确保主机名以点('.')结尾


有关“CreateInstanceFromTextRepresentation”方法的详细信息,请参见此处:

当我要向Microsoft DNS服务器添加NSRecord时。需要添加IP地址id。请访问此屏幕截图。在这种情况下,IPAddress仅用于验证名称服务器是否存在,当它保留在DNS中时,IP地址不会保存。输入主机名并单击“解析”后,它将在“名称服务器”选项卡中显示IP地址,但如果要更新这些记录,它应在打开的对话框中再次解析IP地址。当我要向Microsoft DNS服务器添加NSRecord时。需要添加IP地址id。请访问此屏幕截图。在这种情况下,IPAddress仅用于验证名称服务器是否存在,当它保留在DNS中时,IP地址不会保存。输入主机名并单击“解析”后,将在“名称服务器”选项卡中显示IP地址,但如果要更新这些记录,则应在打开对话框时再次解析IP地址。