Получение идентификатора процессора на виртуальной машине
Я пытаюсь использовать этот код:
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 в вывод проекта, это может помочь.
Это должно работать на ВМ. ИД ЦП, представленный виртуальным ЦП, может соответствовать или не соответствовать физическому ЦП.