在網上找了好久的資料,都是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莫見怪哈。。