我正在尝试远程运行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);
我检查了我的机器和服务器上的安全性,两个命名空间具有相同的安全设置。有什么想法正在发生什么?
感谢。
答案 0 :(得分:3)
您使用了错误的命名空间,Win32_Process
WMI类在root\cimv2
中定义。
所以你必须将你的代码重写为
ManagementScope theScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2", conDet.Server), theConnection);