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

时间:2009-02-18 22:33:04

标签: c# .net wmi

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

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

以下是例外:

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

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

5 个答案:

答案 0 :(得分:5)

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

  

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

脚本专家:Use PowerShell to Troubleshoot “Provider Load Failure”

特定于Win32_NetworkAdapter的高级步骤在InfoSupport的Mark Wolzak的这篇Win32_network adapter "provider load failure"帖子中有所描述。

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

感谢Richard Siddaway博客上的WMI–Provider Load Failure帖子,指出我使用此工具和具体方法。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

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

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

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

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

答案 4 :(得分:1)

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

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