C#WMI读出:Win32_PerfRawData_Tcpip_NetworkInterface不返回任何内容

时间:2018-09-18 14:31:35

标签: c# wmi

我尝试使用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没有项目。有人知道我在做什么错吗?

对不起,我的英语不好,希望您能理解我的问题。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题不是因为我的代码。 Windows从性能监视器读取WMI代码Win32_PerfFormattedData_Tcpip_NetworkInterface。我尝试过的所有其他WMI代码都使用CIM读取它们的值,而CIM直接进入操作系统。 由于Win32_PerfFormattedData_Tcpip_NetworkInterface使用性能监视器,因此执行用户必须位于“性能监视器用户”组中。 当我将用户加入该组时,它会起作用。