3

迭代它的對象,當我嘗試從System.Management命名空間,但使用ManagementObjectSearcherManagementObjectCollection藏品結果FileNotFoundException異常任何試圖獲得與幾個類中的某些系統信息拋出FileNotFoundException異常。ManagementObjectSearcher在foreach循環

下面我呈現有問題的代碼:嘗試從集合獲得下一個項目時

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專業。我想這可以是我的CPU,這是英特爾雙核 - 在其他機器上具有類似的環境相同的程序完美的作品。這些機器之間的主要區別是CPU。

像MACADDRESS和系統驅動其他參數提供了同樣的問題,這表明它可能是相當的軟件問題(?WMI)

非常類似的問題在這裏說明 - >http://news.softpedia.com/news/XP-SP3-Win32-Processor-Class-Labels-Intel-Core-2-Duo-CPUs-Incorectly-90201.shtml但解決的辦法並沒有解決它。

任何想法?提前致謝。

Dawid

+0

這沒什麼意義。當你的循環包含break語句時,你怎麼能從集合中獲得下一個項目? – 2012-02-03 02:53:29

+0

沒錯。不是下一個項目,而是第一個項目。調試時,它停在'in'關鍵字上。所以我不能得到任何物品。 – dawid 2012-02-04 10:51:49

+0

沒有解決您的問題,但無論如何:是否意識到代碼不太適合多核,超線程或多處理器的機器?所有這些將爲查詢生成多行。 – 2012-06-15 05:13:44

回答

-1

我有同樣的問題。 它不要「死機的話,但是,

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 CONFIGRATION /右鍵/屬性 - >我得到消息,有是消息的錯誤「的Win32:找不到模塊」

+0

爲什麼downvote? – 2012-10-19 21:23:31