【问题标题】:C# WMI Readout: Win32_PerfRawData_Tcpip_NetworkInterface returns nothingC# WMI 读数:Win32_PerfRawData_Tcpip_NetworkInterface 不返回任何内容
【发布时间】:2018-09-18 14:31:35
【问题描述】:

我尝试用 C# 读取 WMI 数据。我使用 System.Management 命名空间。对于大多数 WMI 查询,它运行良好。但是当我尝试从 Win32_PerfFormattedData_Tcpip_NetworkInterface 读取“BytesTotalPerSec”时它不起作用。我的代码如下所示:

var select = $"SELECT BytesTotalPerSec FROM 
Win32_PerfFormattedData_Tcpip_NetworkInterface WHERE Name = 'MyAdapter'";
var scope = new ManagementScope($"\\\\{computername}\\root\\cimv2");
scope.Connect();

var query = new ObjectQuery(select);
var searcher = new ManagementObjectSearcher(scope, query);
var queryCollection = searcher.Get();
double value = 0;
foreach (var item in queryCollection)
    value = Convert.ToDouble(item["BytesTotalPerSec"]);

我用其他 WMI 查询尝试了这段代码,它可以工作。当我调试代码时,queryCollection 没有项目。有谁知道我做错了什么?

抱歉我的英语不好,希望你能理解我的问题。

【问题讨论】:

    标签: c# windows wmi


    【解决方案1】:

    我找到了解决方案。问题不是因为我的代码。 Windows 从性能监视器读取 WMI 代码 Win32_PerfFormattedData_Tcpip_NetworkInterface。我尝试使用的所有其他 WMI 代码都使用 CIM 读取它们的值,它直接进入操作系统。 因为 Win32_PerfFormattedData_Tcpip_NetworkInterface 使用性能监视器,所以执行用户必须在 Performance Monitor Users 组中。 当我将我的用户放入这个组时,它就可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2021-12-22
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多