При попытке получить идентификатор процессора через WMI сгенерировано исключение «Не найдено» - PullRequest
1 голос
/ 26 декабря 2010

Я использую этот код для получения идентификатора процессора:

    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 Ответ

2 голосов
/ 26 декабря 2010

Ваша установка WMI кажется несколько неработающей, я протестировал ваш код getProcessorId в Windows 7 с включенным UAC, и он работает нормально. Win32_Processor - действительно стандартный класс, который должен быть там.

Вот ссылка для диагностики проблем с WMI: Как проверить хранилище WMI перед его сборкой

...