Win32_PerfRawData_PerfProc_Process 类不起作用,其他类不起作用

问题描述 投票:0回答:2

我正在尝试使用 WMI 获取 CPU 使用率数据。为此,我使用

Win32_PerfRawData_PerfProc_Process
类。当我运行下面的代码时,我没有得到任何结果。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_PerfRawData_PerfProc_Process");
var data = searcher.Get();

直到这里没有任何错误,如果我尝试使用数据对象,应用程序会等待直到我关闭它。

我做了一些研究,但没有发现任何有用的东西。

注意:其他 WMI 类查询工作正常。我需要使用 WMI(不是性能计数器)。

wmi cpu-usage wmi-query
2个回答
0
投票

请查看注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PerfProc\Performance 以及此处“禁用性能计数器”的值。应该将其设置为“0”才能使该类正常工作。


0
投票

我最初关注的是这篇 msdn 文章,并使用 dcomcnfg + wmimgmt.msc 直接添加我的用户:

https://learn.microsoft.com/en-us/windows/win32/wmisdk/securing-a-remote-wmi-connection

结果是我可以读取并获取许多 WMI 查询的结果,例如:

  • 从 Win32_OperatingSystem 选择 *
  • 从 Win32_Process 选择*

但是 Win32_PerfRawData_PerfProc_Process 总是远程给出空结果(在本地返回数据)。

解决方案是将我的用户添加到计算机管理/本地用户和组中的性能监视器用户

© www.soinside.com 2019 - 2024. All rights reserved.