在网上找了好久的资料,都是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莫见怪哈。。