Доступ к числу процессоров в WMI - PullRequest
1 голос
/ 16 марта 2012

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

Кроме того, для типа данных, который я проверяю, я должен использовать int16?

Надеюсь, кто-нибудь сможет пролить немного света на это и отправить меня в путь. Спасибо.

public void GetPhysicalMemory()
{
    ManagementObjectSearcher mgtObj = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_ComputerSystem");   // Win32_OPeratingSystem");
    ManagementObjectCollection mgtColl = mgtObj.Get();

   // foreach (ManagementObject obj in  mgtObj.Get())
    if (mgtColl.Count != 0 )
    {
        foreach (ManagementBaseObject mgtBaseObj in mgtColl)
        {
            var[] data = mgtBaseObj["NumberOfProcessors"] as int16[];

            if (data != null)
            {
                Console.WriteLine(data);
            }
            else
            {
                Console.WriteLine("Collection = null");
                Console.Read();
                Console.Read();

            }
        }
    }

1 Ответ

0 голосов
/ 16 марта 2012

вы можете выполнять итерацию непосредственно по коллекции, возвращенной методом ManagementObjectSearcher.Get , используя переменную ManagementObject , отсюда вы можете получить доступ к каждому свойству, используя свойство элемента или через запись [].

Проверьте этот пример приложения.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;

namespace ConsoleFoo
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                ManagementObjectSearcher mgtObj = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_ComputerSystem");
                foreach (ManagementObject item in mgtObj.Get())
                {
                    Console.WriteLine("Number Of Processors  {0}", item["NumberOfProcessors"]);
                }
            }
            catch (ManagementException e)
            {
                Console.WriteLine("Exception {0} ", e.Message);
            }
            Console.ReadKey();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...