在foreach循环中迭代其对象时,ManagementObjectSearcher会抛出FileNotFoundException

时间:2012-02-02 20:42:35

标签: c# visual-studio-2008 filenotfoundexception windows-xp-sp3

我尝试使用 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 。我想它可以是我的cpu,它是 intel双核 - 在具有相似环境的其他机器上的相同程序完美无缺。这些机器之间的主要区别是cpu。

其他参数如MACAddress和SystemDrive提供了同样的问题,这表明它可能是软件问题(WMI?)

这里描述了非常类似的问题 - > http://news.softpedia.com/news/XP-SP3-Win32-Processor-Class-Labels-Intel-Core-2-Duo-CPUs-Incorectly-90201.shtml但是解决方案没有解决它。

有什么想法吗?提前谢谢。

的Dawid

2 个答案:

答案 0 :(得分:0)

我知道我的答案有点晚了,但是因为这是我搜索我的错误时谷歌的第一次打击,我想我会给我解决这个主题的链接。

System.Management.ManagementException: Not found

基本上你要做的就是用WMI解决你的错误。

答案 1 :(得分:-1)

我有同样的问题。 并且它不会在'word中而是在

上崩溃
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:找不到模块”

时出错