Disinstallare programmi dal registro o con PowerShell
Ogni programma installato registra un comando di disinstallazione nel registro di sistema. Quando Impostazioni → App non riesce a rimuoverlo, o serve rimuoverlo in modo silenzioso, si usa quel comando.
Dove Windows conserva i comandi di disinstallazione
I programmi installati per tutti gli utenti si trovano sotto HKLM, quelli a 32 bit su Windows a 64 bit sotto WOW6432Node, quelli installati solo per l’utente corrente sotto HKCU. Ogni programma ha una sottochiave con DisplayName, DisplayVersion, UninstallString e spesso QuietUninstallString.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallElencare i programmi installati con PowerShell
Questi comandi leggono tutte e tre le posizioni e mostrano nome, versione e comandi di disinstallazione.
$keys = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"Get-ItemProperty $keys | Where-Object DisplayName | Select-Object DisplayName, DisplayVersion, UninstallString, QuietUninstallString | Sort-Object DisplayNameEseguire il comando di disinstallazione
QuietUninstallString, quando c’è, rimuove il programma senza domande. Altrimenti si esegue UninstallString aggiungendo il parametro silenzioso del tipo di installer (/S per NSIS, /VERYSILENT per Inno Setup). Per i pacchetti MSI il nome della sottochiave è il ProductCode, e msiexec /x lo rimuove.
msiexec /x {PRODUCT-CODE-GUID} /qn /norestart"C:\Program Files\App\uninstall.exe" /SOppure con winget
winget trova i programmi nelle stesse chiavi del registro, anche quelli che non ha installato, e ne avvia il programma di disinstallazione.
winget listwinget uninstall --name "Nome del programma"Se manca il programma di disinstallazione
Se il file di disinstallazione è stato cancellato, di solito basta reinstallare la stessa versione per ripararlo; dopo il programma si rimuove normalmente. Una voce del registro va eliminata a mano solo quando i file del programma non ci sono più, e la chiave va esportata prima di eliminarla.
Domande frequenti
Perché un programma non compare in Impostazioni → App?
Impostazioni elenca solo le voci che hanno un DisplayName e non sono contrassegnate come componenti di sistema. I programmi portable non registrano nulla e si rimuovono cancellandone la cartella.
Che cos’è il ProductCode di un MSI?
Un GUID che identifica un singolo pacchetto MSI. È il nome della sottochiave del programma sotto …\Uninstall ed è riportato nella pagina dell’installazione silenziosa di ogni programma MSI su ExeAtlas.