2011-08-16 177 views
3

我很困惑,似乎無法找到明確的答案。我試圖通過WMI獲取網絡適配器列表。我一直使用的命令對於我們辦公室中幾乎所有的工作站都沒有問題。昨天,問題。一臺機器故障。由於它直接在用戶機器上運行,因此我不必明確地放置機器名稱,因此只使用「。」。爲本地機器。然後,我不在乎「誰」,所以也沒有扮演任何角色。用戶應該能夠查詢他們自己的設備資源。我使用的是...無法通過GETOBJECT(「winmgmts:」)獲取WMI對象

oWMIService = GETOBJECT("winmgmts:\\.\root\cimv2") 
oItems = oWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48) 

從我發現,有些地方說刪除「\」的機器路徑參考。如果我這樣做,我的機器出現故障,但在另一臺機器上仍然沒有結果。所以,我甚至試着去找服務的根目錄,那也失敗了。

oWMIService = GETOBJECT("winmgmts:\\.") 

我得到實際的錯誤是...

Error Code: 0x800401ea: Moniker cannot open file. 

我已經做了這個綽號錯誤一些搜索,但不知道怎麼去解決。

回答

3

有時WMI會被損壞和混淆。選項你可以嘗試是:

重新註冊/有一批這樣的腳本重新編譯WMI組件:

net stop winmgmt 
cd /d %windir%\system32\wbem\ 
for %i in (*.dll) do RegSvr32 /s %i 
for %i in (*.mof, *.mfl) do Mofcomp %i 
net start winmgmt 

如果不解決這個問題,做WMI數據庫的復位與此批:

net stop winmgmt 
cd /d %windir%\system32\wbem\ 
rmdir /s /q Repository 
rmdir /s /q Logs 
mkdir Logs 
net start winmgmt 

和/或嘗試像WMIDiag.vbs script一個工具,看它是否對你的建議。