天天看點

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莫見怪哈。。