Delen via


Met software-installaties werken

Toepassingen die zijn geïnstalleerd met Windows Installer, zijn te vinden via de query's van WMI, maar niet alle toepassingen gebruiken Windows Installer. De specifieke technieken voor het zoeken naar toepassingen die zijn geïnstalleerd met andere hulpprogramma's, zijn afhankelijk van de installatiesoftware.

Toepassingen die bijvoorbeeld zijn geïnstalleerd door de bestanden naar een map op de computer te kopiëren, kunnen meestal niet worden beheerd met behulp van technieken die hier worden besproken. U kunt deze toepassingen beheren als bestanden en mappen met behulp van de technieken die worden besproken in Werken met bestanden en mappen.

Voor software die is geïnstalleerd met behulp van een installatiepakket, kunt u Windows Installer vinden met behulp van de Win32Reg_AddRemovePrograms of de Win32_Product klassen. Beide hebben echter problemen. De Win32Reg_AddRemovePrograms is alleen beschikbaar als u System Center Configuration Manager (SCCM) gebruikt. En de Win32_Product klasse kan traag zijn en heeft bijwerkingen.

Let op

De Win32_Product-klasse is niet geoptimaliseerd voor query's. Query's die gebruikmaken van jokertekenfilters zorgen ervoor dat WMI de MSI-provider gebruikt om alle geïnstalleerde producten op te sommen en vervolgens de volledige lijst opeenvolgend te parseren om het filter te verwerken. Hiermee wordt ook een consistentiecontrole gestart van geïnstalleerde pakketten, het verifiëren en herstellen van de installatie. De validatie is een traag proces en kan leiden tot fouten in de gebeurtenislogboeken. Raadpleeg het KB-artikel 974524 voor meer informatie.

Dit artikel bevat een alternatieve methode voor het vinden van geïnstalleerde software.

Een query uitvoeren op de registersleutel verwijderen om geïnstalleerde software te vinden

Omdat de meeste standaardtoepassingen een verwijderingsprogramma registreren bij Windows, kunnen we er lokaal mee werken door ze te vinden in het Windows-register. Er is geen gegarandeerde manier om elke toepassing op een systeem te vinden. Het is echter mogelijk om alle programma's te vinden met vermeldingen die worden weergegeven in Programma's toevoegen of verwijderen in de volgende registersleutel:

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

We kunnen het aantal geïnstalleerde toepassingen vinden door het aantal registersleutels te tellen:

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

We kunnen deze lijst met toepassingen verder doorzoeken met behulp van verschillende technieken. Als u de waarden van de registerwaarden in de registersleutels onder Uninstallwilt weergeven, gebruikt u de GetValue() methode van de registersleutels. De waarde van de methode is de naam van de registervermelding. Als u bijvoorbeeld de weergavenamen van toepassingen in de Uninstall sleutel wilt zoeken, gebruikt u de volgende opdracht:

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

Notitie

Er is geen garantie dat de DisplayName-waarden uniek zijn.

In het volgende voorbeeld wordt uitvoer geproduceerd die vergelijkbaar is met de klasse 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

In dit voorbeeld Select-Object wordt het aantal geretourneerde items beperkt tot drie.

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