Получение идентификатора процессора на виртуальной машине

Я пытаюсь использовать этот код:

public string GetCPUId()
{
    string cpuInfo = String.Empty;
    string temp = String.Empty;
    ManagementClass mc = new ManagementClass("Win32_Processor");
    ManagementObjectCollection moc = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
        if (cpuInfo == String.Empty)
        {
            cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
        }
    }
    return cpuInfo;
}

Чтобы получить hw uid на виртуальной машине XP (virtualbox), но я получаю только сообщение, которое говорит:

Object reference not set to an instance of an object.

Это потому что это виртуальная машина или как?

3 ответа

Решение

Да, это потому, что вы работаете на виртуальной машине. mo.Properties["ProcessorId"] вернет ноль. Смотрите ответы здесь.

Я только что нашел более быстрое решение здесь: http://www.dotnetspark.com/kb/24-get-processor-id-using-c-sharp.aspx

это работает быстрее, чем у вас. И ЭТО РАБОТАЕТ В МОИХ ВИРТУАЛЬНЫХ ОКНАХ (с использованием VMware Workstation 7.0.0 с виртуальной установкой WINDOWS XP), так как оба кода используют одну и ту же библиотеку, ваша должна работать! попробуйте включить файл dll в вывод проекта, это может помочь.

Это должно работать на ВМ. ИД ЦП, представленный виртуальным ЦП, может соответствовать или не соответствовать физическому ЦП.

Другие вопросы по тегам