Indice dei Contenuti
La repository WMI è uno dei componenti critici del sistema operativo, in italiano è chiamata Strumentazione Gestione WMI ed è in parole povere un database che contiene le meta-informazioni e le definizioni per le classi WMI.
Vediamo come interrogare lo strumento per capire se è danneggiato e come ripararlo.
Come interrogare lo strumento e quali errori possono esserci
Gli errori che indicano una corruzione del database WMI sono i seguenti:
- Unable to connect to rootdefault or rootcimv2 namespaces. Fails returning error code 0x80041002 pointing to WBEM_E_NOT_FOUND.
- When we open Computer Management and Right Click on Computer Management (Local) and select Properties, you get the following error: ” WMI : Not Found” or it hangs trying connect
- 0x80041010 WBEM_E_INVALID_CLASS
- Usando lo strumento wbemtest, si blocca
- Schemas/Objects missing
- Strange connection/operation errors (0x8007054e):
Però bisogna accertarsi fino in fondo che il database sia veramente corrotto, infatti ripristinarlo potrebbe rendere instabile il sistema oppure creare dei problemi con alcuni applicativi installati (se non quasi tutti).
Vediamo quindi ora come verificare lo stato della repository WMI e come ripristinarla o resettarla. Per ultimo vedremo un metodo attraverso la forzatura mediante una chiave di registro.
Come verificare l’integrità della repository WMI?
Per verificare lo stato della repository WMI procedere così:
Premere i pulsanti WIN + X ed aprire terminale (admin) o powershell come amministratore, quindi digitare:
winmgmt /verifyrepository
Se la risposta è come da immagine la repo è integra se invece vedete il messaggio “repository is not consistent” vuol dire che non è integra.
Come ripristinare la repository WMI quando è inconsistente o corrotta?
Ripristino e reset del database WMI
Ripristinare il database con un rebuild
Il primo step è eseguire questo comando da un terminale come amministratore (o powershell):
winmmgmt /salvagerepository
questo andrà a ricontrollare la repo e in caso di inconsistenza eseguirà un rebuild.
Successivamente, eseguire questi due comandi:
net stop Winmgmt
net start Winmgmt
e poi riprovare ad eseguire il comando
winmgmt /verifyrepository
per verificare nuovamente la situazione. Se persiste proseguire con il prossimo step.
Resettare il database
Per resettare il database WMI bisogna eseguire questo comando da un terminale come amministratore (o powershell):
winmgmt /resetrepository
quindi eseguire
net stop Winmgmt
net start Winmgmt
e poi
winmgmt /verifyrepository
per verificare l’avvenuto reset.
Per eseguire la stessa operazione in Windows Server 2012 e successive rimandiamo a questa risorsa ufficiale.
In alternativa è possibile usare uno strumento powershell reperibile da Github.
Un metodo alternativo è quello di agire su una chiave di registro specifica, vediamo in che modo.
Forzare il ripristino partendo dal registro
Ci sono due metodi in cui la repo WMI si ripristina in autonomia, il primo è l’AUTORESTORE dove vengono usate le copie di backup VSS e l’altro è AUTORECOVERY dove il rebuild viene eseguito partendo dalle copie genuine originali in base alla registrazione MOFS.
Se il primo processo non funziona è possibile forzare il secondo, per farlo aprire il registro di sistema (regedit) e controllare il seguente percorso
HKLM\Software\Microsoft\WBEM\CIMOM\Autorecover MOFs
Se il percorso indicato sopra è vuoto o non presente è possibile copiare la medesima chiave da un altro sistema uguale ed equivalente ed incollarla.
Successivamente eseguire il comando
Winmgmt /resetrepository
quindi eseguire
net stop winmgmt /y
Winmgmt /resetrepository
Ora verificare il sistema e vedere se la repo risulta ancora danneggiata con il comando
winmgmt /verifyrepository
In caso affermativo dovremmo vedere una schermata simile a questa: