【问题标题】:How can I resolve a "Provider load failure" for WMI requests?如何解决 WMI 请求的“提供程序加载失败”?
【发布时间】:2009-02-18 22:33:03
【问题描述】:

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

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

这是一个例外:

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

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

【问题讨论】:

    标签: c# .net wmi


    【解决方案1】:

    一种可能追查问题根本原因的方法是使用WBEMTest 一种工具,MS 脚本专家认为这是最简单的方法之一

    "要查找 WMI 类的提供者..."

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

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

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

    感谢 Richard Siddaway 博客上的 WMI–Provider Load Failure 帖子向我介绍了此工具和具体方法。

    【讨论】:

    • 真的吗?为什么投反对票?我实际上使用这些步骤来解决我们的一个开发系统的问题。
    • +1 用于 WBEMTest。我一直使用 PowerShell 来调试 WMI 的东西,效果很好,但是 WBEMTest 是专门为此设计的。
    【解决方案2】:

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

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

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

    【讨论】:

    • 或者,只运行提升的工具(“以管理员身份”)。奇怪的是,在本地访问 MicrosoftIISv2 提供程序需要提升,即使您可以毫无问题地远程访问它...
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 虽然它被标记为答案,但它不是很多情况下的解决方案。通常只有在查询一些表的实例(例如Win32_NetworkAdapterstackoverflow.com/questions/7403164/…)和其他表工作正常时才会出现问题。这也发生在 .NET 2.0 上,它甚至没有此答案链接中提到的 System.Management.Instrumentation.dll 。在这些情况下,此错误的原因可能是错误的 3rd 方驱动程序实现,您对此无能为力。
      【解决方案5】:

      WMI 注册全部在 WMI 中进行(静态类。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        • 1970-01-01
        • 2019-05-29
        相关资源
        最近更新 更多