win32_processor няма памет

Искам да получа процесор за идентификатори в .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;

Този код работи на други компютри, но не и на моя...

Използвам windows 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::Is ProcessorId Unique for all computers

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