我很难过,似乎无法找到明确的答案。我正在尝试通过WMI获取网络适配器列表。我一直在使用的命令对我们办公室几乎所有工作站都没有问题。昨天,问题。一台机器发生故障。由于它直接在用户机器上运行,因此我不必明确地设置它们的机器名,因此只使用“。”。用于本地机器。然后,我不关心“谁”,所以也没有模仿。用户应该能够查询自己的设备资源。我使用的是......
oWMIService = GETOBJECT("winmgmts:\\.\root\cimv2")
oItems = oWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)
根据我的发现,有些地方说要删除机器路径引用的“\”。如果我这样做,我的机器出现故障,仍然没有结果在另一台机器上。所以,我甚至尝试过去服务的根目录,但也失败了。
oWMIService = GETOBJECT("winmgmts:\\.")
我得到的实际错误是......
Error Code: 0x800401ea: Moniker cannot open file.
我已经对这个名字错误做了一些搜索,但不知道如何解决。
答案 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之类的工具,看看它是否有适合您的建议。