我无法直接访问Win32_操作系统通过 WMI 公开的管理类。
它是一个单例类,我非常确定“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);
System.Management.ManagementException 被捕获
消息=“无效的对象路径”
来源=“系统.管理”
堆栈跟踪:
在 System.Management.ManagementException.ThrowWithExtendedInfo(管理状态错误代码)
在 System.Management.ManagementObject.Initialize(Boolean getObject)
在 System.Management.ManagementBaseObject.get_wbemObject()
在 System.Management.ManagementObject.get_ClassPath()
在 System.Management.ManagementObject.GetMethodParameters(字符串方法名称、 ManagementBaseObject& inParameters、 IWbemClassObjectFreeThreaded& inParametersClass、 IWbemClassObjectFreeThreaded& outParametersClass)
在 System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args)
感谢您的回复。
Nick- 我不知道该怎么做:)
Uros- 我的印象是这是一个单例类,因为this http://msdn.microsoft.com/en-us/library/aa394239.aspxMSDN 页面。此外,在 WBEMTest 实用程序中打开该类会显示this http://img247.imageshack.us/img247/5686/64933271au3.png.
实例对话框在这些字段中显示“1 个对象”和“最大批次:1”,并列出“Win32_OperatingSystem=@”
ManagementScope 已验证正常工作,所以我不知道发生了什么。我是 WMI 新手,但这似乎是最简单的用例之一!