无法通过GETOBJECT获取WMI对象(“winmgmts:”)

时间:2011-08-16 12:27:47

标签: wmi

我很难过,似乎无法找到明确的答案。我正在尝试通过WMI获取网络适配器列表。我一直在使用的命令对我们办公室几乎所有工作站都没有问题。昨天,问题。一台机器发生故障。由于它直接在用户机器上运行,因此我不必明确地设置它们的机器名,因此只使用“。”。用于本地机器。然后,我不关心“谁”,所以也没有模仿。用户应该能够查询自己的设备资源。我使用的是......

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

根据我的发现,有些地方说要删除机器路径引用的“\”。如果我这样做,我的机器出现故障,仍然没有结果在另一台机器上。所以,我甚至尝试过去服务的根目录,但也失败了。

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

我得到的实际错误是......

Error Code: 0x800401ea: Moniker cannot open file.

我已经对这个名字错误做了一些搜索,但不知道如何解决。

1 个答案:

答案 0 :(得分: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之类的工具,看看它是否有适合您的建议。