Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace nainstalované pomocí Instalační služby systému Windows lze najít prostřednictvím dotazů rozhraní WMI, ale ne všechny aplikace používají Instalační službu systému Windows. Specifické techniky hledání aplikací nainstalovaných s jinými nástroji závisí na instalačním softwaru.
Například aplikace nainstalované zkopírováním souborů do složky v počítači se obvykle nedají spravovat pomocí technik probíraných zde. Tyto aplikace můžete spravovat jako soubory a složky pomocí technik probíraných v části Práce se soubory a složkami.
Pro software nainstalovaný pomocí instalačního balíčku lze instalační službu systému Windows najít pomocí Win32Reg_AddRemovePrograms nebo třídy Win32_Product . Obě tyto problémy však mají. Win32Reg_AddRemovePrograms je k dispozici pouze v případě, že používáte nástroj System Center Configuration Manager (SCCM). A Win32_Product třída může být pomalá a má vedlejší účinky.
Upozornění
Třída Win32_Product není optimalizovaná. Dotazy, které používají filtry se zástupnými čísly, způsobují, že služba WMI použije zprostředkovatele MSI k vytvoření výčtu všech nainstalovaných produktů, a následné parsování úplného seznamu za účelem zpracování filtru. Tím se také zahájí kontrola konzistence nainstalovaných balíčků, ověření a oprava instalace. Ověření je pomalý proces a může vést k chybám v protokolech událostí. Další informace najdete v článku znalostní báze 974524.
Tento článek obsahuje alternativní metodu pro vyhledání nainstalovaného softwaru.
Dotazování klíče registru odinstalace a vyhledání nainstalovaného softwaru
Vzhledem k tomu, že většina standardních aplikací zaregistruje odinstalátor ve Windows, můžeme s nimi pracovat místně tak, že je vyhledáme v registru Windows. Neexistuje žádný zaručený způsob, jak najít každou aplikaci v systému. Všechny programy s výpisy zobrazenými v příkazu Přidat nebo odebrat programy je však možné najít v následujícím klíči registru:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.
Počet nainstalovaných aplikací můžeme najít tak, že spočítáme počet klíčů registru:
$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459
Tento seznam aplikací můžeme dále prohledávat pomocí různých technik. Chcete-li zobrazit hodnoty hodnot registru v klíčích registru v části Uninstall, použijte GetValue() metodu klíčů registru. Hodnota metody je název položky registru. Pokud například chcete vyhledat zobrazované názvy aplikací v Uninstall klíči, použijte následující příkaz:
Get-ChildItem -Path $UninstallPath |
ForEach-Object -Process { $_.GetValue('DisplayName') } |
Sort-Object
Poznámka:
Neexistuje žádná záruka, že hodnoty DisplayName jsou jedinečné.
Následující příklad vytvoří výstup podobný Win32Reg_AddRemovePrograms třídě:
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
V zájmu stručnosti tento příklad používá Select-Object k omezení počtu položek vrácených na tři.
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