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

Chr*_*son 9 .net c# wmi

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

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

这是例外:

System.Management.ManagementException: Provider load failure 
   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
   at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ake 5

找出问题根源的一种方法是使用WBEMTest,MS Scripting Guys认为这是最简单的方法之一

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

脚本专家:使用PowerShell对“提供程序加载失败”进行故障排除

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

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

感谢Richard Siddaway的博客中的WMI –提供程序负载失败文章,为我指出了该工具和特定方法。


C. *_*oss 1

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

  • 尽管它被标记为答案,但它并不是很多情况下的解决方案。通常,仅在查询某些表的实例(例如“Win32_NetworkAdapter”:http://stackoverflow.com/questions/7403164/managementexception-provider-load-failure-error-when-accessing-win32-networkadap)和其他情况时才会出现问题桌子工作正常。这也发生在 .NET 2.0 上,它甚至没有这个答案的链接中提到的 *System.Management.Instrumentation.dll* 。在这些情况下,此错误的原因可能是第 3 方驱动程序实现错误,您对此无能为力。 (3认同)