【问题标题】:How to add a DNS alias programmatically?如何以编程方式添加 DNS 别名?
【发布时间】:2010-09-03 02:04:58
【问题描述】:

我想在 Microsoft 的 DNS 服务器中创建一个别名记录,以将 AliasA 指向 ComputerA。如何以编程方式执行此操作?

【问题讨论】:

    标签: c# dns


    【解决方案1】:

    我使用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;
        }
    

    【讨论】:

    • con 未定义。 System.Management.ConnectionOptions你在那里设置了哪些参数? msdn.microsoft.com/de-de/library/…
    • 已经 8 年了,这是我完成的一次性自动化项目。如果您不指定任何选项,它会使用当前登录的用户进行身份验证,所以这可能是我使用的,对不起:(
    【解决方案2】:

    我认为 .NET 没有任何东西可以提供对这些的访问(我可以通过一些快速搜索找到对专有库、控件等的引用),因此您可能必须使用 Win32 API 通过 P/Invoke(虽然另一种可能性是通过 WMI 完成工作)。

    您将从DnsAcquireContextHandle 开始,然后(可能)DnsQuery 获取当前记录集,修改其内容以添加您的新别名,DnsReplaceRecordSet 让 DNS 服务器使用新记录集,最后DnsReleaseContextHandle 关闭。

    当然,您需要在服务器上获得正确的权限,否则这些都不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 2011-04-24
      • 2015-05-01
      • 2016-11-23
      • 2012-09-16
      • 2014-07-03
      相关资源
      最近更新 更多