Получение идентификатора процессора на виртуальной машине - PullRequest
2 голосов
/ 24 февраля 2011

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

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 ]

7 голосов
/ 24 февраля 2011

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

3 голосов
/ 26 октября 2011

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

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

0 голосов
/ 24 февраля 2011

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

...