当前位置 : 主页 > 编程语言 > c语言 >

c# – WMI – 直接访问Win32_OperatingSystem的单例实例

来源:互联网 收集:自由互联 发布时间:2021-06-25
我无法直接访问通过WMI公开的Win32_OperatingSystem管理类. 它是一个单例类,我很确定“Win32_OperatingSystem = @”是获取单例实例的正确路径语法. 对InvokeMethod的调用产生了问题底部列出的异常
我无法直接访问通过WMI公开的Win32_OperatingSystem管理类.

它是一个单例类,我很确定“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”按钮会发生什么?
网友评论