9

我正在使用 WMI 收集系统信息。它在我测试过的每个系统上都能正常工作,但我有一两个用户报告了问题。调试日志显示 WMI 代码正在引发“提供程序加载失败”异常。我无法复制这个问题。

用户已验证 WMI 服务正在自动模式下运行。

这是一个例外:

System.Management.ManagementException: Provider load failure 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

关于如何解决和解决此问题的任何想法?

4

5 回答 5

6

可能追查问题根本原因的一种方法是使用WBEMTest一种工具,MS Scripting Guys 说这是最简单的方法之一

“要查找 WMI 类的提供者……”

脚本专家:使用 PowerShell 解决“提供程序加载失败”</a>

特定于 Win32_NetworkAdapter 的高级步骤在 infoSupport 的 Mark Wolzak 的这篇Win32_network 适配器“提供程序加载失败”帖子中进行了描述。

  • 点击开始>>运行>> wbemtest
  • 单击“连接...”以连接到命名空间
  • 执行查询'Select * From MSFT_WmiSelfEvent'
  • 向下滚动到底部并跟踪以下 WMI 事件
  • 查看导致问题的 dll 的任何 Msft_WmiProvider_InitializationOperationFailureEvent 或 Msft_WmiProvider_LoadOperationFailureEvent 的详细信息

感谢Richard Siddaway 博客上的WMI–Provider Load Failure帖子向我指出了这个工具和具体的方法。

于 2013-02-25T15:09:41.627 回答
2

在具有用户帐户控制的操作系统上关闭 UAC。

就我而言:罗斯的回答没有解决。我可以加载一些 WMI 提供程序(逻辑磁盘),但不能加载其他(IIS)。WMI 资源管理器工具(如 PowerGui)将显示提供程序。这表明安全策略可以阻止加载 WMI 提供程序。关闭 UAC 后,所有 WMI 提供程序都已正确加载。

当然,您可能希望打开 UAC。如果我找到所需的具体政策,我会更新这个答案。

于 2010-03-02T21:51:24.373 回答
2

所以,我知道这很旧,但我遇到了上面描述的确切问题。我真的很难弄清楚,所以我想我会做出回应,希望它可以帮助别人。

我试图加载 IIS WMI 提供程序并收到“提供程序加载失败”错误。我可以通过使用 wbemtest.exe 程序运行我的 WMI 查询来重现该问题。

我启动了 procmon.exe 以显示正在加载的内容(或在我的情况下无法加载),果然,wmiprvse.exe 正在加载一个注册表项,它说 inetsrv 位于 C:\windows 目录中 - 它没有存在于我的机器上(C:\windows 已被 c:\winnt 取代)

更新密钥解决了我的问题,但更重要的一点是,我有一段时间试图弄清楚为什么会出现此错误,并且在执行 WMI 查询时运行 procmon 将我指出了问题所在。希望它也适合你。

于 2010-08-06T18:37:04.010 回答
1

您可能想要确认所有 dll 都已正确注册(请参阅http://msdn.microsoft.com/en-us/library/bb961987.aspx)。

于 2009-02-18T23:02:08.877 回答
1

WMI 注册全部在 WMI(静态类。

WMI CIM Studio(MS,IIRC 的 WMI 工具的一部分)对于探索这些类很有用(当然比编写大量查询更容易)。

于 2009-02-19T15:28:43.553 回答