本文介绍了WMI - 直接访问Win32_OperatingSystem的单一实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经遇到问题直接访问的 Win32_OperatingSystem 是通过WMI暴露管理类。

I've having trouble directly accessing the Win32_OperatingSystem management class that is exposed via WMI.

这是一个单例类,和我M相当肯定Win32_OperatingSystem = @是正确的路径语法得到一个单身的实例。

It is a singleton class, and I'm pretty certain "Win32_OperatingSystem=@" is the correct path syntax to get the instance of a singleton.

要的InvokeMethod的调用产生时的底部列出的例外问题一样,访问类路径属性(注释行)。

The call to InvokeMethod produces the exception listed at the bottom of the question, as does accessing the ClassPath property (commented line).

我在做什么错了?

[我知道,我可以使用ManagementObjectSearcher /的ObjectQuery返回Win32_OperatingSystem的集合(这将只包含一个),但因为我知道这是一个单身,我想直接访问它。]

[I'm aware that I can use ManagementObjectSearcher/ObjectQuery to return a collection of Win32_OperatingSystem (which would contain only one), but since I know it is a singleton, I want to access it directly.]

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
堆栈跟踪:在System.Management在System.Management.ManagementException.ThrowWithExtendedInfo
(ManagementStatus的errorCode)
。 ManagementObject.Initialize(布尔的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(字符串methodName的,对象[]参数)


System.Management.ManagementException was caught Message="Invalid object path " Source="System.Management" StackTrace: at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) at System.Management.ManagementObject.Initialize(Boolean getObject) at System.Management.ManagementBaseObject.get_wbemObject() at System.Management.ManagementObject.get_ClassPath() at System.Management.ManagementObject.GetMethodParameters(String methodName, ManagementBaseObject& inParameters, IWbemClassObjectFreeThreaded& inParametersClass, IWbemClassObjectFreeThreaded& outParametersClass) at System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args)

谢谢你的答复。

尼克 - - 我不知道如何去这样做:)

Nick - I don't know how to go about doing that :)

乌罗什 - 我的印象是,这是一个单例类,因为的的MSDN页面。此外,在WBEMTEST工具打开类显示rel=\"nofollow\">这 ,情况不同了回来在Windows XP中。所以,当你点击实例布通会发生什么?

Wow, the world is changing. Sorry, I didn't realize you were using Vista. As you can see here, things were different back in Windows XP. So, what happens when you click the "Instances" buton?

这篇关于WMI - 直接访问Win32_OperatingSystem的单一实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 17:53