Исключение "Не найдено" при попытке получить идентификатор процессора через WMI
Я использую этот код для получения идентификатора процессора:
public static string getProcessorId()
{
var mc = new ManagementClass("Win32_Processor");
var moc = mc.GetInstances();
foreach (var mo in moc)
{
return mo.Properties["ProcessorId"].Value.ToString();
}
return "Unknown";
}
Я использую 32-битную Windows 7, Visual Studio 2008. К сожалению, при вызове метода mc.GetInstances() возникает исключение "Не найдено".
Вот похожий фрагмент кода (выборка с жесткого диска):
public static string getVolumeSerialNumber()
{
var disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}
Этот код также дает сбой - метод disk.Get() вызывает исключение "Недопустимый класс".
Я запустил этот код с выключенным и включенным UAC - ничего не помогает.
Что я делаю неправильно?
1 ответ
Ваша установка WMI кажется несколько неработающей, я протестировал ваш код getProcessorId на Windows 7 с включенным UAC, и он работает нормально. Win32_Processor - действительно стандартный класс, который должен быть там.
Вот ссылка, чтобы помочь диагностировать проблемы WMI: Как проверить хранилище WMI перед его восстановлением