Возвращение использования ЦП в WMI с использованием С#

Чтобы вернуть использование ЦП с помощью WMI, возвращаю ли значение PercentProcessorTime из Win32_PerfFormattedData_PerfOS_Processor? Если нет, на каком классе я должен смотреть? Спасибо.

Ответ 1

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor");
foreach (ManagementObject obj in searcher.Get())
{
    var usage = obj["PercentProcessorTime"];
    var name = obj["Name"];
    Console.WriteLine(name +" : " + usage);
}

И для любителей Линка

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor");
var cpuTimes = searcher.Get()
    .Cast<ManagementObject>()
    .Select(mo => new
        {
            Name = mo["Name"],
            Usage = mo["PercentProcessorTime"]
        }
    )
    .ToArray();

Ответ 2

Похоже, что информация также доступна в WMI здесь:

"select LoadPercentage from Win32_Processor"

"Грузоподъемность каждого процессора, усредненная до последней секунды. Загрузка процессора относится к общей вычислительной нагрузке для каждого процессора за один раз".

ИЛИ

"select LoadPercentage from CIM_Processor"

"Загрузка процессора, усредненная за последнюю минуту, в процентах".

ИЛИ

"select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor" также работает.


Примечание. они часто возвращают несколько результатов на ядро ​​процессора и должны быть суммированы, чтобы получить общее использование ЦП для всей системы, поэтому ищите это.

Этот вопрос и ответ действительно имеют больше общего с WMI, поскольку получение информации от WMI с помощью С# действительно представляет собой другой вопрос и должно быть очень похоже на любой запрос WMI на С#.