WMI提供程序加载失败

时间:2014-06-18 02:19:25

标签: .net wmi

对于下面的代码,我在下一行(第10行)收到以下错误。有什么想法吗?

System.Management.ManagementException occurred
  Message=Provider load failure 
  Source=System.Management
  StackTrace:
       at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
       at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

以下是代码:

Using mos As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_Process")
For Each mo As ManagementObject In mos.Get()
    Dim name As String = mo("Name")
    Dim commandLine As String = mo("CommandLine")
    If name = "rundll32.exe" Then
        Dim index As Integer
        commandLine = commandLine.Substring(index).ToLower
        processPath = commandLine
    End If
  Next
End Using

1 个答案:

答案 0 :(得分:0)

https://msdn.microsoft.com/en-us/library/bb961987.aspx

当WMI客户端尝试使用在利用WMI Provider Extensions基础结构的WMI提供程序中实现的功能时,可能会收到“提供程序加载失败”错误。 原因可能是未正确注册的动态链接库(DLL)。在安装.NET Framework 3.5(SP1之前)期间,未正确注册名为System.Management.Instrumentation.dll的DLL。 要执行注册,请运行Regasm.exe工具,将DLL的完整路径作为唯一参数。以下过程提供了正确注册System.Management.Instrumentation.dll的分步说明。 注册System.Management.Instrumentation.dll

  1. 单击“开始”,然后选择“所有程序”。

  2. 单击Microsoft Visual Studio 2008并选择Visual Studio Tools。

  3. 在Windows Vista之前的操作系统上,单击“Microsoft Visual Studio 2008命令提示符”以打开命令提示符窗口。在Windows Vista上,右键单击“Microsoft Visual Studio 2008命令提示符”,然后选择“以管理员身份运行”以打开提升的命令提示符窗口。

  4. 在命令提示符下,键入“regasm%systemdrive%\ program files \ reference assemblies \ microsoft \ framework \ v3.5 \ system.management.instrumentation.dll”,然后按ENTER键。
  5. 检查消息,已成功注册类型。要验证注册是否已更正,您可以在下面运行WSH脚本。它应该输出System.Management.Instrumentation for .NET Framework 3.5已经注册。