ManagementObjectSearcher генерирует исключение FileNotFoundException при итерации своих объектов в цикле foreach - PullRequest
3 голосов
/ 03 февраля 2012

Я пытаюсь получить некоторую системную информацию с несколькими классами из пространства имен System.Management , но любая попытка использовать ManagementObjectSearcher или ManagementObjectCollection элементов коллекции приводит к FileNotFoundException .

Ниже я представляю проблемный фрагмент кода:

    public static string GetProcessorID() {
        var processorID = "";
        var query = "SELECT ProcessorId FROM Win32_Processor";
        var oManagementObjectSearcher = new ManagementObjectSearcher(query);

        foreach (var oManagementObject in oManagementObjectSearcher.Get()) {
            processorID = (string)oManagementObject["ProcessorId"];
            break;
        }

        return processorID;
    }

Исключение выдается в строке 'foreach' при попытке получить следующий элемент из коллекции.

Это наблюдается на машине с windows xp professional sp3 , с visual studio 2008 professional .Я предполагаю, что это может быть что-то с моим процессором, который является двухъядерным Intel - та же программа на другой машине с аналогичной средой работает отлично.Основное различие между этими машинами - это процессор.

Другие параметры, такие как MACAddress и SystemDrive, предоставляют ту же проблему, которая предполагает, что это может быть скорее программная проблема (WMI?)

Описана очень похожая проблемаздесь -> http://news.softpedia.com/news/XP-SP3-Win32-Processor-Class-Labels-Intel-Core-2-Duo-CPUs-Incorectly-90201.shtml но решение не решило его.

Есть идеи?Заранее спасибо.

Давид

Ответы [ 2 ]

0 голосов
/ 06 февраля 2013

Я знаю, что мой ответ немного запоздал, но, поскольку он впервые попал в Google, когда я искал свою ошибку, мне кажется, я поставил ссылку на тему, решающую ее для меня.

System.Management.ManagementException: не найдено

По сути, вам нужно устранить ошибки с помощью WMI.

0 голосов
/ 15 июня 2012

У меня такая же проблема.И он не вылетает в слове, а в

oManagementObjectSearcher.Get().

Проверьте трассировку стека:

System.IO.FileNotFoundException - Nie można odnaleźć określonego modułu. (Wyjątek od HRESULT: 0x8007007E)
    Stack trace:
w System.Management.ThreadDispatch.Start()
   w System.Management.ManagementScope.Initialize()
   w System.Management.ManagementObjectSearcher.Initialize()
   w System.Management.ManagementObjectSearcher.Get()
[...]

Когда я перешел на Мой компьютер / щелкните правой кнопкой мыши / Управление / Услуги /Конфигурация WMI / правый клик / свойства -> Я получил сообщение об ошибке с сообщением «Win32: Не удалось найти модуль»

...