win32_processor не хватает памяти

Я хочу получить процессор id в .NET с помощью WMI, но когда я использую метод get() из ManagementObjectSearcher, я получаю исключение нехватки памяти...

Если вы хотите взглянуть на код, см. ниже:

   ManagementObjectSearcher searcher = new ManagementObjectSearcher(
                "select * from Win32_Processor");

            foreach (ManagementObject share in searcher.Get())
                foreach (PropertyData PC in share.Properties)
                    if (PC.Name.Equals("ProcessorId"))
                        return (string)PC.Value;

            return null;

Этот код работает на других компьютерах, но не на моем...

Я использую виндовс 7.

В чем проблема ?

Я попытался перезапустить службу WMI, и это не решило мою проблему :(


person Tata2    schedule 24.06.2013    source источник
comment
однако, должно работать   -  person Andras Sebo    schedule 24.06.2013


Ответы (1)


Существует несколько причин, которые могут вызвать исключение нехватки памяти.

  1. возможная утечка памяти в WMI, источник: http://brooke.blogs.sqlsentry.net/2010/02/win32service-memory-leak.html
  2. проверьте, есть ли у вас разрешение(я), которое объяснило бы, почему ваш код работает на некоторых компьютерах и почему нет на вашем.
  3. запустите свой код от имени администратора (для отладки запустите VS от имени администратора)
  4. Вот еще фрагмент кода, попробуйте и этот... кто знает

Образец:

public static String GetCPUId()
{
    String processorID = "";

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(
        "Select * FROM WIN32_Processor");

    ManagementObjectCollection mObject = searcher.Get();

    foreach (ManagementObject obj in mObject)
    {
        processorID = obj["ProcessorId"].ToString();
    }

    return processorID;
}

Источник: WIN32_Processor::Id ProcessorId уникален для всех компьютеров

person Andras Sebo    schedule 24.06.2013
comment
Большое вам спасибо! Пробовал запускать от администратора - работает нормально :) Но на другом компе пробовал запускать под учетной записью пользователя без роли администратора - тоже работает... Почему на моем без администратора не работает разрешения? - person Tata2; 24.06.2013
comment
Проверьте, включен ли UAC (en.wikipedia.org/wiki/User_Account_Control) на вашем компьютер. - person Andras Sebo; 24.06.2013
comment
Я сталкивался с этой проблемой раньше, и это связано с разрешениями пользователя. Для того, чтобы определенные части WMI правильно работали с учетной записью пользователя, необходимо предоставить определенные разрешения учетной записи. - person Sean; 02.02.2014