WMI - 直接访问 Win32_OperatingSystem 的单例实例

2024-01-06

我无法直接访问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 新手,但这似乎是最简单的用例之一!


Win32_OperatingSystem 不是单例类 - 如果您检查其限定符,您会发现没有为其定义单例限定符,因此您必须使用 ManagementObjectSearcher.Get() 或 ManagementClass.GetInstances(),即使只有该类的一个实例。 Win32_OperatingSystem关键属性是Name,因此有一个选项可以直接获取实例,使用

ManagementObject OS = new ManagementObject(@"Win32_OperatingSystem.Name='OSname'")

但根据我的经验,OSName 总是类似:

“Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1”

因此使用 ManagementObjectSearcher 可能是最简单的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WMI - 直接访问 Win32_OperatingSystem 的单例实例 的相关文章

随机推荐

  • 如何在列表中查找多个最大值项目[重复]

    这个问题在这里已经有答案了 我试图弄清楚如何获取整数列表并将该列表中的所有项目返回到另一个列表中作为它们的最大值 但带有它们的索引 因此 我需要能够在不使用枚举 lambda numpy 或任何此类内容的情况下完成此操作 它必须是非常基本的
  • 列表中的元素测试

    对于我正在编写的样式表 实际上是一组样式表 每个样式表生成不同的输出格式 我需要评估某个值是否存在于值列表中 在这种情况下 正在测试的值取自元素的属性 要测试的列表来自样式表的调用 并被视为顶级
  • C 中的对齐属性 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SO 中看到了很多关于对齐属性
  • SASS 和@font-face

    我有以下 CSS 我如何在 SASS 中描述它 我尝试用 css2sass 反向编译它 但不断收到错误 这是我的 CSS 可以工作 吗 font face font family bingo src url bingo eot src lo
  • React:“重定向”未从“react-router-dom”导出

    我在运行时收到以下错误npm run start在终端中 尝试导入错误 重定向 未从 react router dom 导出 我已经重新安装了node modules react router dom react router 还重新启动了
  • 什么是 CUDA 上下文?

    谁能解释一下或者给我推荐一些关于什么是 CUDA 上下文的好资料 我搜索了 CUDA 开发者指南 但对它并不满意 任何解释或帮助都会很棒 cuda API 公开了有状态库的功能 两个连续的调用彼此相关 简而言之 上下文就是它的状态 The
  • iOS:如何将 MKMapPoint 或 CLLocationCooperative2D 转换为 UTM?

    根据我的阅读 这需要一些我不擅长的复杂数学 所以 我在这里问 有人有将 MKMapPoint 或 CLLocationCooperative2D 转换为 UTM 值的经验吗 我找到了这个资源 http www uwgb edu dutchs
  • 什么是 csv 文件以及如何使用 java 代码解析它? [复制]

    这个问题在这里已经有答案了 可能的重复 快速 CSV 解析 https stackoverflow com questions 6857248 fast csv parsing 如何正确地将 CSV 文件解析为二维数组 https stac
  • 了解非阻塞 Web 服务调用与非阻塞 JDBC 之间的区别

    我试图从概念上理解为什么在 Play Framework 2 0 中 调用被认为是最佳实践WS url get 对于 Web 服务调用 但是如果您将任何其他阻塞调用 例如 JDBC 调用 包装在 Promise 中 是否建议您在默认执行上下
  • Python - 根据这些值拟合 GEV 分布

    我对 Python 很陌生 我在互联网上浏览过 但找不到任何可以帮助我解决问题的逻辑 我在图中有降水值 现在我需要根据图中的这些值拟合 GEV 分布 每个值等于从 1974 年到 2017 年的一年的最大值 因此总共有 43 个值 这些是值
  • 如何通过 Firebase 设置自定义身份验证声明并识别平台

    我正在关注 firebase 文档here https firebase google com docs auth extend with blocking functions setting custom and session clai
  • 如何读取msmq消息(我,不是电脑)

    我想查看队列内部 msm 控制台管理单元有此属性对话框 但很难阅读 并且对我来说重要的消息被编码 如下所示 3C 3F 78 6D 6C 20 76 65 3C 65 73 62 3A 6D 65 73
  • Python:如何处理子类中的类型提示?

    我有一个基类Base和一个子类Sub 我还有另外两门课BaseMember and SubMember BaseMember 后者是前者的子类 现在我只想让基类输入其函数返回的提示BaseMember 对象 而子类具有返回的函数SubMem
  • 如何找到我所在域名的简称?

    我想返回我正在运行的计算机的域的短名称 我不想要 env USERDOMAIN因为这是用户登录的域 可能与计算机所在的域不同 如果我这样做 gwmi win32 computersystem Domain 这让我获得了 FQDN 但我想要类
  • 无法找到模块“mscorwks.dll”

    我尝试使用 winDBG 来调试转储文件 当我运行 loadby sos mscorwks dll 时 它给了我一条错误消息 无法找到模块 mscorwks dll 有没有人见过这个 如果您正在调试 NET 4 0应用程序 您需要使用以下内
  • 检查手机上的互联网连接

    我想检查我的手机是否可以连接互联网 我已经看到几个问题了 其中之一是Question https stackoverflow com questions 13617017 windows phone 8 connection handler
  • 如何在控制台应用程序中设置默认连接字符串?

    在我的带有 Web 界面的 MVC 项目中 我习惯在 Web Config 文件中设置连接字符串 但是 现在我正在制作一个沼泽标准控制台应用程序 也带有数据库挂钩 但如何为应用程序全局设置连接字符串 目前 我正在设置 var dbIndex
  • 当为结构体分配 null 值时,CLR 如何绕过抛出错误?

    我试图理解这段代码中的一件事 Nullable
  • 从 Azure 连接到 HTTPS Web 服务

    我在 Azure 中有一个 Web 角色 必须连接到受 SSL 保护的外部 Web 服务 当应用程序尝试连接到 Web 服务时 会出现错误 无法建立 SSL TLS 安全通道的信任关系 具有权限 certname organization
  • WMI - 直接访问 Win32_OperatingSystem 的单例实例

    我无法直接访问Win32 操作系统通过 WMI 公开的管理类 它是一个单例类 我非常确定 Win32 OperatingSystem 是获取单例实例的正确路径语法 对 InvokeMethod 的调用会产生问题底部列出的异常 访问 Clas