WMI命名空间“未找到”

时间:2012-03-14 14:59:44

标签: c# .net wmi

我正在尝试远程运行bat文件(从XP到2003)并遇到连接到cimv2以外的任何WMI命名空间的问题。下面的代码在“GetMethodParameters”调用中遇到“Not Found”异常。但如果我用“cimv2”替换“目录”,一切都很好吃。

ConnectionOptions theConnection = new ConnectionOptions();
theConnection.Username = conDet.User;
theConnection.Password = conDet.Pwd;
theConnection.Impersonation = ImpersonationLevel.Impersonate;

ManagementScope theScope = new ManagementScope(String.Format(@"\\{0}\root\directory", conDet.Server), theConnection);
theScope.Connect();

ManagementClass processClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());

enter code here
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = filename;

ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

我检查了我的机器和服务器上的安全性,两个命名空间具有相同的安全设置。有什么想法正在发生什么?

感谢。

1 个答案:

答案 0 :(得分:3)

您使用了错误的命名空间,Win32_Process WMI类在root\cimv2中定义。

所以你必须将你的代码重写为

ManagementScope theScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2", conDet.Server), theConnection);