【发布时间】:2012-02-25 13:00:57
【问题描述】:
我尝试通过 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 dual core - 其他具有类似环境的机器上的相同程序可以完美运行。这些机器之间的主要区别是cpu。
MACAddress 和 SystemDrive 等其他参数也出现了同样的问题,这表明它可能是软件问题(WMI?)
这里描述了非常相似的问题 -> http://news.softpedia.com/news/XP-SP3-Win32-Processor-Class-Labels-Intel-Core-2-Duo-CPUs-Incorectly-90201.shtml 但解决方案没有解决它。
有什么想法吗?提前致谢。
大卫
【问题讨论】:
-
这没什么意义。当你的循环包含一个 break 语句时,你怎么能从集合中获取下一个项目?
-
对。不是下一个,而是第一个。调试时它停止在“in”关键字上。所以我拿不到任何东西。
-
没有解决您的问题,但无论如何:您是否意识到代码不太适合多核、超线程或多处理器机器?所有这些都会为查询生成多行。
-
@dawid,你解决过这个问题吗?
-
@Eric:不,很遗憾不是。我只是将它包装在一个 try-catch 语句中,这不是解决方案,但在我的情况下,这是处理问题的唯一合理方法。
标签: c# visual-studio-2008 filenotfoundexception windows-xp-sp3