使用ManagmentObjectSearcher的C#WMI查询异常无效类

问题描述

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

enter image description here

enter image description here

这只是一些示例C#代码。我知道它没有使用“ using”语句,我只是想使其简短。我已经注意到,如果我在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,则看不到。

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...