2009-02-18 20 views
7

Estoy usando WMI para recopilar información del sistema. Funciona bien en todos los sistemas en los que lo he probado, pero tengo uno o dos usuarios que informan problemas. Los registros de depuración muestran que el código WMI arroja una excepción de "error de carga del proveedor". No he podido replicar el problema.¿Cómo puedo resolver un "error de carga del proveedor" para las solicitudes de WMI?

Los usuarios han verificado que el servicio WMI se ejecuta en modo automático.

Ésta es la excepción:

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

Alguna idea sobre cómo solucionar y resolver este problema?

Respuesta

2

Es posible que desee confirmar que todos los dlls están registrados correctamente (consulte http://msdn.microsoft.com/en-us/library/bb961987.aspx).

+3

Aunque está marcado como respuesta, no es la solución para muchos casos. A menudo, el problema ocurre solo cuando se buscan instancias de algunas pocas tablas (por ejemplo, 'Win32_NetworkAdapter': http://stackoverflow.com/questions/7403164/managementexception-provider-load-failure-error-when-accessing-win32-networkadap) y otras las tablas funcionan bien Esto también ocurre en .NET 2.0 que ni siquiera tiene el * System.Management.Instrumentation.dll * que se menciona en el enlace de esta respuesta. La causa de este error en estos casos es probablemente una implementación de un controlador de terceros defectuoso y no puede hacer nada al respecto. – bitbonk

1

registro WMI está todo a cabo en WMI (clases estáticas.

WMI CIM Studio (parte de WMI Herramientas de MS, IIRC) es útil para explorar estas clases (y ciertamente más fácil que escribir un montón de consultas).

2

En los sistemas operativos con el control de cuentas de usuario desactivar UAC

En mi caso:. la respuesta de Ross acerca de no resolvió que podía cargar algunos proveedores de WMI (DiscoLógico) pero no en otros (IIS) herramientas del explorador WMI (tales.. como PowerGui) mostraría al proveedor. Esto sugirió que la política de seguridad puede evitar cargar proveedores de WMI. Una vez que se convirtió el UAC de todos los proveedores de WMI cargados sin error.

Por supuesto, es posible que desee dejar el UAC activado. Actualizaré esta respuesta si encuentro las políticas específicas requeridas.

+0

O, simplemente ejecute su herramienta elevada ("Como administrador"). Curiosamente, para acceder localmente al proveedor de MicrosoftIISv2 es necesario elevarlo, aunque puedes acceder a él de forma remota sin problemas ... – Jaykul

2

Por lo tanto, sé que esto es viejo, pero estaba teniendo el problema exacto descrito anteriormente. Fue realmente difícil para mí descubrirlo, así que pensé que respondería con la esperanza de que ayudara a alguien más.

Estaba intentando cargar el proveedor IIS WMI y obtener el error "Error de carga del proveedor". Podría reproducir el problema ejecutando mi consulta WMI utilizando el programa wbemtest.exe.

Encendí procmon.exe para mostrar lo que se estaba cargando (o no cargando en mi caso) y efectivamente, wmiprvse.exe estaba cargando una clave de registro que decía que inetsrv estaba ubicado en el directorio C: \ windows - que no existía en mi máquina (C: \ windows había sido reemplazado por c: \ winnt)

La actualización de la clave resolvió mi problema, pero el punto más importante aquí es que me costó un montón intentarlo por qué recibí este error, y ejecutar procmon mientras ejecutaba mi consulta WMI me indicó el problema. Espero que sea para ti también.

3

Una forma de realizar un seguimiento de, posiblemente, por la causa raíz del problema es utilizar WBEMTest una herramienta que los chicos del scripting MS dicen que es una de las maneras más fáciles

"para encontrar el proveedor de una clase WMI. .."

el Scripting Guys: Use PowerShell to Troubleshoot “Provider Load Failure”

el alto nivel pasos específicos para la Win32_NetworkAdapter se describen en este Win32_network adapter "provider load failure" poste por Mark Wolzak en infoSupp ort.

  • Haga clic en Inicio >> >> ejecución wbemtest
  • clic en 'Conectar ...' para conectarse a un espacio de nombres
  • ejecutar la consulta 'Select * From MSFT_WmiSelfEvent'
  • de desplazamiento hacia abajo hasta el fondo y rastrear el después de eventos WMI
  • vistazo a los detalles de cualquier Msft_WmiProvider_InitializationOperationFailureEvent o Msft_WmiProvider_LoadOperationFailureEvent para la DLL que está causando el problema

Gracias a la publicación WMI–Provider Load Failure en el Blog de Richard Siddaway por señalarme esta herramienta y metodología específica.

+1

¿De verdad? ¿Por qué el voto hacia abajo? De hecho, utilicé estos pasos para solucionar un problema con uno de nuestros sistemas de desarrollo. –

+0

+1 para WBEMTest. Siempre utilicé PowerShell para depurar cosas de WMI, que funciona bastante bien, pero WBEMTest está diseñado específicamente con esto en mente. – ash

Cuestiones relacionadas