代码之家  ›  专栏  ›  技术社区  ›  Chris Thompson

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

  •  7
  • Chris Thompson  · 技术社区  · 15 年前

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

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

    例外情况如下:

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

    对如何解决此问题有何看法?

    5 回复  |  直到 11 年前
        1
  •  2
  •   C. Ross trotttrotttrott    15 年前

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

        2
  •  3
  •   Joshua Drake    11 年前

    找到问题根源的一种方法是使用 WBEMTest MS脚本编写人员说的工具是最简单的方法之一

    “要查找WMI类的提供程序…”

    脚本编写人员: Use PowerShell to Troubleshoot “Provider Load Failure”

    下面描述了特定于win32_networkadapter的高级步骤 Win32_network adapter "provider load failure" 由Mark Wolzak在信息支持中心发布。

    • 单击“开始”>>“运行”>>“WBEMTEST”
    • 单击“连接”以连接到命名空间
    • 执行查询“select*from msft_wmiselfevent”
    • 向下滚动到底部并跟踪以下WMI事件
    • 查看导致问题的dll的任何msft_wmiprovider_initializationOperationFailureEvent或msft_wmiprovider_loadOperationFailureEvent的详细信息。

    多亏了 WMI–Provider Load Failure 在RichardSiddaway的博客上发表文章,告诉我这个工具和具体的方法。

        3
  •  2
  •   Precipitous    14 年前

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

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

    当然,你可能想离开UAC。如果我找到所需的特定策略,我将更新此答案。

        4
  •  2
  •   Jeremy    14 年前

    所以,我知道这很古老,但我有上面描述的确切问题。我真的很难弄明白,所以我想我会做出反应,希望它能帮助别人。

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

    我启动procmon.exe以显示正在加载的内容(或在我的情况下加载失败),并且wmirvse.exe确实正在加载注册表项,它表示inetsrv位于c:\windows目录中-我的计算机上不存在该目录(c:\windows已被c:\winnt替换)。

    更新密钥解决了我的问题,但更重要的一点是,我花了很长时间试图弄清楚为什么会出现此错误,并在执行wmi查询时运行procmon将我的问题指向正确的方向。希望你也能。

        5
  •  1
  •   Richard    15 年前

    wmi注册都保存在wmi(静态类)中。

    wmi-cim-studio(来自ms,iirc的wmi工具的一部分)对于探索这些类很有用(当然比编写大量查询更容易)。