它是一个单例类,我很确定“Win32_OperatingSystem = @”是获取单例实例的正确路径语法.
对InvokeMethod的调用产生了问题底部列出的异常,访问ClassPath属性(注释行)也是如此.
我究竟做错了什么?
[我知道我可以使用ManagementObjectSearcher / ObjectQuery来返回Win32_OperatingSystem的集合(它只包含一个),但由于我知道它是一个单例,我想直接访问它.
ManagementScope cimv2 = InitScope(string.Format(@"\\{0}\root\cimv2", this.Name)); ManagementObject os = new ManagementObject( cimv2, new ManagementPath("Win32_OperatingSystem=@"), new ObjectGetOptions()); //ManagementPath p = os.ClassPath; os.InvokeMethod("Reboot", null);
系统管理.ManagementException被捕获
Message =“无效的对象路径”
来源= “System.Management”
堆栈跟踪:
在System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
在System.Management.ManagementObject.Initialize(Boolean getObject)
在System.Management.ManagementBaseObject.get_wbemObject()
在System.Management.ManagementObject.get_ClassPath()
在System.Management.ManagementObject.GetMethodParameters(String methodName,ManagementBaseObject& inParameters,IWbemClassObjectFreeThreaded& inParametersClass,IWbemClassObjectFreeThreaded& outParametersClass)
在System.Management.ManagementObject.InvokeMethod(String methodName,Object [] args)
谢谢你的回复.
尼克 – 我不知道该怎么做:)
Uros – 我的印象是它是一个单例类,因为this MSDN页面.此外,在WBEMTest实用程序中打开类显示this.
实例对话框显示:“1个对象”和“最大批量:1”在这些字段和列表中“Win32_OperatingSystem = @”
ManagementScope被验证为有效,所以我不知道是什么.我是WMI新手,但这似乎是最简单的用例之一!
哇,世界正在发生变化.对不起,我没有意识到你使用的是Vista.正如您所看到的那样,在Windows XP中,情况有所不同.那么,点击“Instances”按钮会发生什么?