Gestione delle installazioni di software

Le applicazioni installate con Windows Installer sono disponibili tramite le query WMI, ma non tutte le applicazioni usano Windows Installer. Le tecniche specifiche per trovare le applicazioni installate con altri strumenti dipendono dal software del programma di installazione.

Ad esempio, le applicazioni installate copiando i file in una cartella nel computer in genere non possono essere gestite usando tecniche descritte qui. È possibile gestire queste applicazioni come file e cartelle usando le tecniche descritte in Uso di file e cartelle.

Per il software installato con un pacchetto del programma di installazione, Windows Installer è reperibile usando le Win32Reg_AddRemovePrograms o le classi Win32_Product . Tuttavia, entrambi presentano problemi. Il Win32Reg_AddRemovePrograms è disponibile solo se si usa System Center Configuration Manager (SCCM). E la classe Win32_Product può essere lenta e ha effetti collaterali.

Attenzione

La classe Win32_Product non è ottimizzata per le query. Le query che usano filtri con caratteri jolly fanno in modo che WMI usi il provider MSI per enumerare tutti i prodotti installati e quindi analizzare l'elenco completo in sequenza per gestire il filtro. Verrà anche avviata una verifica coerenza dei pacchetti installati, che verificherà e ripristinerà l'installazione. La convalida è un processo lento che potrebbe restituire errori nei registri eventi. Per altre informazioni, vedere l' articolo 974524 della Microsoft Knowledge Base.

Questo articolo fornisce un metodo alternativo per trovare il software installato.

Esecuzione di query sulla chiave del Registro di sistema di disinstallazione per trovare il software installato

Poiché la maggior parte delle applicazioni standard registra un programma di disinstallazione con Windows, è possibile gestirle localmente trovandole nel Registro di sistema di Windows. Non esiste un modo certo per trovare tutte le applicazioni in un sistema. Tuttavia, è possibile trovare tutti i programmi con elenchi visualizzati in Installazione applicazioni nella seguente chiave del Registro di sistema:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.

È possibile trovare il numero di applicazioni installate conteggiando il numero di chiavi del Registro di sistema:

$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459

È possibile eseguire ricerche in questo elenco di applicazioni usando un'ampia gamma di tecniche. Per visualizzare i valori dei valori del Registro di sistema nelle chiavi Uninstalldel Registro di sistema in , usare il GetValue() metodo delle chiavi del Registro di sistema. Il valore del metodo corrisponde al nome della voce del Registro di sistema. Ad esempio, per trovare i nomi visualizzati delle applicazioni nella Uninstall chiave, usare il comando seguente:

Get-ChildItem -Path $UninstallPath |
    ForEach-Object -Process { $_.GetValue('DisplayName') } |
    Sort-Object

Nota

Non esiste alcuna garanzia che i valori DisplayName siano univoci.

L'esempio seguente genera un output simile alla classe Win32Reg_AddRemovePrograms :

Get-ChildItem $UninstallPath |
    ForEach-Object {
        $ProdID = ($_.Name -split '\\')[-1]
        Get-ItemProperty -Path "$UninstallPath\$ProdID" -ea SilentlyContinue |
        Select-Object -Property DisplayName, InstallDate, @{n='ProdID'; e={$ProdID}}, Publisher, DisplayVersion
} | Select-Object -First 3

Per motivi di brevità, questo esempio usa Select-Object per limitare il numero di elementi restituiti a tre.

DisplayName    : 7-Zip 22.01 (x64)
InstallDate    :
ProdID         : 7-Zip
Publisher      : Igor Pavlov
DisplayVersion : 22.01

DisplayName    : AutoHotkey 1.1.33.10
InstallDate    :
ProdID         : AutoHotkey
Publisher      : Lexikos
DisplayVersion : 1.1.33.10

DisplayName    : Beyond Compare 4.4.6
InstallDate    : 20230310
ProdID         : BeyondCompare4_is1
Publisher      : Scooter Software
DisplayVersion : 4.4.6.27483