【问题标题】:C# wmi query exception invalid class using ManagmentObjectSearcher使用 ManagmentObjectSearcher 的 C# wmi 查询异常无效类
【发布时间】:2020-09-04 19:56:28
【问题描述】:

我正在尝试在 c# 中使用 System.Management 运行 wmi 查询并不断获取无效类。它适用于使用 pcoip 协议的 wmware 虚拟桌面。我可以使用 WMI Explorer,它显示如下。

这里只是一些示例 C# 代码。我知道它没有使用“使用”语句,我只是想保持简短。我注意到如果我在 WMI Explorer 中选择顶级命名空间并尝试运行查询,它会失败并出现相同的无效类错误,然后如果我单击 ROOT\CIMV2 并运行查询,它工作正常。我已经检查了范围等中的路径,它似乎是正确的。我也不能使用 Microsoft.Management.Infrastructure。

            var scope = new ManagementScope(ManagementPath.DefaultPath);
            var query = new SelectQuery("SELECT * from Win32_PerfRawData_TeradiciPerf_PCoIPSessionImagingStatistics");
            scope.Connect();
            var searcher = new ManagementObjectSearcher(scope, query);
            var collection = searcher.Get();

注意我可以使用 powershell 和检索使用

Get-WmiObject -Class "Win32_PerfRawData_TeradiciPerf_PCoIPSessionImagingStatistics"

更新:奇怪,但我注意到我可以在 WMI Explorer 中看到,但如果使用 WMI Code Creator 我看不到。

【问题讨论】:

    标签: c# wmi system.management


    【解决方案1】:

    LMAO...很好,看到它在 WMI Explorer 中工作,但在 WMI Code Creater 中却不能工作,这让我开始思考,尤其是在查看了 WMI Explorer 的源代码并意识到它在代码方面做的事情和我一样。查看任务管理器,发现 WMI Explorer 作为 64 位应用程序运行,而 WMI Code Creator 运行在 32 位。那么在 64 编译之后,你知道它的工作原理是什么。我错误地假设所有 WMI 提供程序都有 32 位和 64 位版本,但显然情况并非如此。好消息是我想使用性能计数器而不是 WMI,在使用性能计数器而不是使用 WMI 查询编译为 64 后你知道什么,我现在也可以看到性能计数器类别。希望这是我今年最后一个空头时刻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多