C # WMI Readout: Win32_PerfRawData_Tcpip_NetworkInterface ничего не возвращает

2

Я пытаюсь прочитать данные WMI с помощью С#. Я использую пространство имен System.Management. Для большинства WMI-запросов он работает спокойно. Но когда я пытаюсь читать "BytesTotalPerSec" из Win32_PerfFormattedData_Tcpip_NetworkInterface, он не работает. Мой код выглядит так:

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 нет элементов. Кто-нибудь знает, что я делаю неправильно?

Извините за мой плохой английский, надеюсь, вы понимаете мою проблему.

Теги:
wmi

1 ответ

0
Лучший ответ

Я нашел решение. Проблема заключается не в моем коде. Windows считывает WMI-код Win32_PerfFormattedData_Tcpip_NetworkInterface с монитора производительности. Все остальные WMI-коды, которые я попробовал, прочитали их значение с CIM, который идет непосредственно в ОС. Поскольку Win32_PerfFormattedData_Tcpip_NetworkInterface использует монитор производительности, исполняющий пользователь должен находиться в группе пользователей монитора производительности. Когда я помещаю своего пользователя в эту группу, он работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню