天天看点

DNS管理有了初步的成功迹象。。:)

在网上找了好久的资料,都是VBScript的。唯一看到的就是用C#却无法创建的代码。。

使用的是System.Management

代码如下:

ManagementClass dnsRRClass = new ManagementClass(@"\\ServerNameHere\root\MicrosoftDNS", "MicrosoftDNS_ResourceRecord", null);

ManagementBaseObject inParams = dnsRRClass.GetMethodParameters("CreateInstanceFromTextRepresentation");

inParams["DnsServerName"] = sServer;

inParams["ContainerName"] = sDomainName;

inParams["TextRepresentation"] = sTextRepresentation;

ManagementBaseObject outParams = dnsRRClass.InvokeMethod("CreateInstanceFromTextRepresentation", inParams, null);

Console.WriteLine("Executing the method returns {0}", outParams["ReturnValue"]);

原始地址:http://www.gotdotnet.com/community/messageboard/Thread.aspx?id=31217

看了这么久,有个发现。。System.Management

,WMI其实就是把Com组件WbemScripting.SWbemLocator封装起来罢了。所以连WMI出错的提示都是ComException....  

既然如此,为了兼容性,我还不如干脆使用WbemScripting.SWbemLocator好了。。

使用下面的代码可以成功加入一条A纪录。

  WbemScripting.SWbemMethod method = objRR.Methods_.Item("CreateInstanceFromTextRepresentation",0);

  WbemScripting.SWbemObject inparam = method.InParameters;

  inparam.Properties_.Add("DnsServerName",WbemScripting.WbemCimtypeEnum.wbemCimtypeString,false,0);

  inparam.Properties_.Add("ContainerName",WbemScripting.WbemCimtypeEnum.wbemCimtypeString,false,0);

  inparam.Properties_.Add("TextRepresentation",WbemScripting.WbemCimtypeEnum.wbemCimtypeString,false,0);

  inparam.Properties_.Item("DnsServerName",0).set_Value(ref server);

  inparam.Properties_.Item("ContainerName",0).set_Value(ref strDomain);

  inparam.Properties_.Item("TextRepresentation",0).set_Value(ref strRR);

  objRR.ExecMethod_("CreateInstanceFromTextRepresentation",inparam,0,null);

不过离成功的路还很远,只是实现了一个功能,心里有点高兴,上来发泄一下。dudu莫见怪哈。。