如何解决WMI请求的“提供程序加载失败”?

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

用户已validationWMI服务正在自动模式下运行。

这是例外:

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

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

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

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

“找到WMI类的提供者……”

脚本专家: 使用PowerShell解决“提供程序加载失败”问题

Win32_NetworkAdapter特有的高级步骤在InfoSupport的Mark Wolzak的Win32_network适配器“provider load failure”中描述。

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

感谢Richard Siddaway博客上的WMI-Provider Load Failurepost,指出了这个工具和具体的方法。

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

在我的情况下:罗斯的答案没有解决。 我可以加载一些WMI提供程序(logicaldisk)但不加载其他(IIS)。 WMI资源管理器工具(如PowerGui)将显示提供程序。 这表明安全策略可以阻止加载WMI提供程序。 关闭UAC后,所有WMI提供程序都会加载而不会出错。

当然,您可能想要离开UAC。 如果我找到所需的具体政策,我会更新此答案。

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

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

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

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

WMI注册全部保存在WMI中(静态类。

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