Yazılım yüklemeleri ile çalışma
Windows Installer ile yüklenen uygulamalar WMI'nin sorguları aracılığıyla bulunabilir, ancak tüm uygulamalar Windows Installer'ı kullanmaz. Diğer araçlarla yüklenen uygulamaları bulmak için belirli teknikler yükleyici yazılımına bağlıdır.
Örneğin, dosyaları bilgisayardaki bir klasöre kopyalayarak yüklenen uygulamalar genellikle burada açıklanan teknikler kullanılarak yönetilemiyor. Bu uygulamaları Dosya ve Klasörlerle Çalışma bölümünde açıklanan teknikleri kullanarak dosya ve klasör olarak yönetebilirsiniz.
Bir yükleyici paketi kullanılarak yüklenen yazılımlar için Windows Installer, Win32Reg_AddRemovePrograms veya Win32_Product sınıfları kullanılarak bulunabilir. Ancak, bunların her ikisinin de sorunları vardır. Win32Reg_AddRemovePrograms yalnızca System Center Configuration Manager (SCCM) kullanıyorsanız kullanılabilir. Ayrıca Win32_Product sınıfı yavaş olabilir ve yan etkileri vardır.
Dikkat
Win32_Product sınıfı sorgu için iyileştirilmiş değildir. Joker karakter filtreleri kullanan sorgular WMI'nin MSI sağlayıcısını kullanarak tüm yüklü ürünleri listelemesine ve ardından filtreyi işlemek için tam listeyi sırayla ayrıştırmasına neden olur. Bu ayrıca yüklenen paketlerin tutarlılık denetimini başlatır, yüklemeyi doğrular ve onarir. Doğrulama yavaş bir işlemdir ve olay günlüklerinde hatalara neden olabilir. Daha fazla bilgi için 974524 KB makalesini arayın.
Bu makalede, yüklü yazılımları bulmak için alternatif bir yöntem sağlanır.
Yüklü yazılımları bulmak için Uninstall kayıt defteri anahtarını sorgulama
Çoğu standart uygulama Bir kaldırıcıyı Windows'a kaydettirdiğinden, bunları Windows kayıt defterinde bularak bu uygulamalarla yerel olarak çalışabiliriz. Sistemdeki her uygulamayı bulmanın garantili bir yolu yoktur. Ancak, aşağıdaki kayıt defteri anahtarında Program Ekle veya Kaldır bölümünde görüntülenen listelerle tüm programları bulmak mümkündür:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
.
Yüklü uygulamaların sayısını kayıt defteri anahtarlarını sayarak bulabiliriz:
$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459
Çeşitli teknikleri kullanarak bu uygulama listesini daha fazla arayabiliriz. altındaki Uninstall
kayıt defteri anahtarlarında kayıt defteri değerlerini görüntülemek için kayıt defteri anahtarlarının yöntemini kullanın GetValue()
. yönteminin değeri, kayıt defteri girişinin adıdır. Örneğin, anahtardaki Uninstall
uygulamaların görünen adlarını bulmak için aşağıdaki komutu kullanın:
Get-ChildItem -Path $UninstallPath |
ForEach-Object -Process { $_.GetValue('DisplayName') } |
Sort-Object
Not
DisplayName değerlerinin benzersiz olması garanti değildir.
Aşağıdaki örnek , Win32Reg_AddRemovePrograms sınıfına benzer bir çıkış oluşturur:
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
Kısa olması açısından, bu örnek döndürülen öğe sayısını üçle sınırlamak için kullanır Select-Object
.
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
PowerShell
A cross-platform task automation solution made up of a command-line shell and a scripting language.
Geri Bildirim
Gönderin ve geri bildirimi görüntüleyin