2011-08-23 263 views
2

我運行下面的代碼:System.Management.ManagementException:未找到

ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
ManagementObjectCollection colMObj = oMClass.GetInstances(); 

這是引發此異常:

System.Management.ManagementException: Not found 
at System.Management.ThreadDispatch.Start() 
at System.Management.ManagementScope.Initialize() 
at System.Management.ManagementObject.Initialize(Boolean getObject) 
at System.Management.ManagementClass.GetInstances(EnumerationOptions options) 
at System.Management.ManagementClass.GetInstances() 

我去檢查在Windows XP和正在運行的服務發現Windows Management Instrumentation服務的狀態爲「已啓動」。我嘗試重新啓動服務,但沒有任何好處。 然後我試圖從使用ServiceController的類我正在運行的代碼中得到這個服務的狀態:

ServiceController wpiService = new ServiceController(); 
wpiService.ServiceName = "Winmgmt"; 
string wmiStatus = wpiService.Status.ToString(); 
MessageBox.Show("WMI status= " + wmiStatus); 

wmiStatus評估爲「正在運行」。

我只在運行相同軟件的多臺機器中的一臺上看到了此錯誤。奇怪的是,這臺機器運行平穩了好幾個月,然後突然開始顯示這個錯誤。

任何線索可能是什麼原因造成的?

回答

2

解決方案是在Windows XP上修復WMI。我沒有詳細的逐步修復(我不是那個實施修復的人),但是我的理解是,與此服務相關的存儲庫可能會損壞,並且有一個Windows實用程序可以修復它。有幾個關於如何做到這一點的在線資源。

3

我也遇到過這個問題。這是前面提到的在線資源之一,它解釋瞭如何修復WMI: http://windowsxp.mvps.org/repairwmi.htm

修復方法似乎在不同版本的Windows之間有所不同,如該頁所述。

我有沒有這些版本的這個問題,但在Windows嵌入式標準2009年由於Windows XP Service Pack 2的最接近關係到上市的操作系統,這是我使用的一個:

對於Windows XP服務包2

單擊開始,運行,鍵入以下命令:

RUNDLL32 wbemupgd,UpgradeRepository

該命令用於檢測和修復損壞的WMI存儲庫。結果存儲在setup.log(%windir%\ system32 \ wbem \ logs \ setup.log)文件中。

+1

感謝您修復WMI的鏈接!我的一個客戶端是XP sp3,我首先嚐試過「rundll32 wbemupgd,UpgradeRepository」,但它返回錯誤(找不到對象/名稱空間)。然後,我試着「停止winmgmt->重命名庫 - >啓動winmgmt」,這是有效的,再次感謝! – AlexanderYao