2009-02-18 7 views
7

Sto utilizzando WMI per raccogliere informazioni di sistema. Funziona bene su tutti i sistemi in cui l'ho provato, ma ho uno o due utenti che stanno segnalando problemi. I registri di debug mostrano che il codice WMI genera un'eccezione "Errore caricamento del provider". Non sono stato in grado di replicare il problema.Come posso risolvere un "errore di caricamento del provider" per le richieste WMI?

Gli utenti hanno verificato che il servizio WMI è in esecuzione in modalità automatica.

Ecco l'eccezione:

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

Ogni pensiero su come risolvere i problemi e risolvere questo problema?

risposta

2

È possibile confermare che tutte le DLL sono state registrate correttamente (vedere http://msdn.microsoft.com/en-us/library/bb961987.aspx).

+3

Sebbene sia contrassegnato come risposta, non è la soluzione per molti casi. Spesso il problema si verifica solo quando si verificano istanze di alcune tabelle (ad esempio 'Win32_NetworkAdapter': http://stackoverflow.com/questions/7403164/managementexception-provider-load-failure-error-when-accessing-win32-networkadap) e altro le tabelle funzionano bene Ciò si verifica anche su .NET 2.0 che non ha nemmeno il * System.Management.Instrumentation.dll * che è menzionato nel collegamento di questa risposta. La causa di questo errore in questi casi è probabilmente un'implementazione difettosa del driver di terze parti e non puoi farci nulla. – bitbonk

1

registrazione WMI è tutto tenuto in WMI (classi statiche.

WMI CIM Studio (parte di WMI Strumenti da MS, IIRC) è utile per esplorare queste classi (e certamente più facile che scrivere un sacco di domande).

2

su sistemi operativi con controllo account utente disattivare UAC

Nel mio caso:. la risposta di Ross circa non ha risolvere riuscivo a caricare alcuni provider WMI (LogicalDisk) ma non altri (IIS) WMI strumenti Explorer (ad esempio.. come PowerGui) mostrerebbe il provider, suggerendo che la politica di sicurezza può impedire il caricamento dei provider WMI spento tutti i provider WMI caricati senza errori.

Naturalmente, si consiglia di lasciare UAC su. Aggiornerò questa risposta se trovo le politiche specifiche richieste.

+0

Oppure, esegui semplicemente il tuo strumento elevato ("Come amministratore"). Stranamente, l'accesso al fornitore MicrosoftIISv2 a livello locale richiede elevazione, anche se è possibile accedervi da remoto senza problemi ... – Jaykul

2

Quindi, so che questo è vecchio, ma stavo avendo il problema esatto descritto sopra. È stato davvero difficile per me capire, quindi ho pensato di rispondere nella speranza che aiuti qualcun altro a uscire.

Stavo tentando di caricare il provider WMI IIS e ottenere l'errore "Errore caricamento del provider". Potrei riprodurre il problema eseguendo la mia query WMI utilizzando il programma wbemtest.exe.

Ho avviato procmon.exe per mostrare cosa veniva caricato (o non riuscendo a caricare nel mio caso) e abbastanza sicuro, wmiprvse.exe stava caricando una chiave di registro stava dicendo che inetsrv si trovava nella directory C: \ windows - che non esisteva sulla mia macchina (C: \ windows era stato sostituito da c: \ winnt)

Aggiornamento della chiave risolto il mio problema, ma il punto più grande qui è che ho avuto un inferno di tempo cercando di capire il motivo per cui stavo ottenendo questo errore, e l'esecuzione di procmon mentre eseguivo la mia query WMI mi indicava correttamente il problema. Spero che lo farà anche per te.

3

Un modo per rintracciare forse la causa principale del problema è quello di utilizzare WBEMTest uno strumento che le MS Scripting Guy dire è uno dei modi più semplici

"per trovare il fornitore di una classe WMI. .."

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

l'elevato livello di misure specifiche per la Win32_NetworkAdapter sono descritti in questo post di Mark Win32_network adapter "provider load failure" Wolzak a infoSupp ort.

  • Fare clic su Start >> >> corsa wbemtest
  • click 'Connect ...' per la connessione a uno spazio dei nomi
  • eseguire la query 'Select * From MSFT_WmiSelfEvent'
  • scorrere verso il basso e traccia la a seguito di eventi WMI
  • sguardo ai dettagli di qualsiasi Msft_WmiProvider_InitializationOperationFailureEvent o Msft_WmiProvider_LoadOperationFailureEvent per la DLL che causa il problema

Grazie al post WMI–Provider Load Failure al blog di Richard Siddaway per avermi indirizzato a questo strumento e alla metodologia specifica.

+1

Davvero? Perché il voto negativo? In realtà ho usato questi passaggi per risolvere un problema con uno dei nostri sistemi di sviluppo. –

+0

+1 per WBEMTest. Ho sempre usato PowerShell per il debug di materiale WMI, che funziona abbastanza bene, ma WBEMTest è stato progettato appositamente per questo. – ash

Problemi correlati