如何解决使用ManagmentObjectSearcher的C#WMI查询异常无效类
我试图在c#中使用System.Management运行wmi查询,并保持获取无效类。它适用于使用pcoip协议的wmware虚拟桌面。我可以使用WMI Explorer,它显示如下。
这只是一些示例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之后,您知道什么了,现在我也可以看到性能计数器类别。希望那是我今年的最后一次空头时刻。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。