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önetılamaz. Dosya ve Klasörlerle Çalışma bölümünde açıklanan teknikleri kullanarak bu uygulamaları dosya ve klasör olarak yönetebilirsiniz.

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. 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 yüklü tüm ürünleri listelemesine ve ardından filtreyi işlemek için tam listeyi sıralı olarak ayrıştırmasına neden olur. Bu ayrıca yüklenen paketlerin tutarlılık denetimini başlatır, yüklemeyi doğrular ve onarılır. 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 makale, yüklü yazılımları bulmak için alternatif bir yöntem sağlar.

Yüklü yazılımları bulmak için Kayıt defterini kaldırma anahtarını sorgulama

Çoğu standart uygulama bir kaldırıcıyı Windows'a kaydettiğinizden, 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 listesinde daha fazla arama yapabilirsiniz. altındaki Uninstallkayı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 girdisinin 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 çıktı 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ısalık açısından bu örnek, döndürülen öğe sayısını üç ile 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