С помощью PowerShell получите точно такой же список приложений, как в «Установке и удалении программ».

С помощью PowerShell получите точно такой же список приложений, как в «Установке и удалении программ».

Существуют различные методы поиска установленных приложений в системе, но, насколько мне известно, ни один из них не возвращает точно такой же список, как элемент панели управления Установка и удаление программ. Вот некоторые из способов, которые я пробовал:

  • WMI через Win32_Product и Win32Reg_AddRemovePrograms
  • Реестр, ветви x32 и x64

Например, у меня есть 217 записей в AR и

gwmi  Win32_Product

возвращает 261 элемент.

gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {![string]::IsNullOrWhiteSpace($_.DisplayName) } | select DisplayName

возвращает 119 элементов.

 (gwmi Win32Reg_AddRemovePrograms) + (gwmi Win32Reg_AddRemovePrograms64) | sort DisplayName -Unique 

возвращает 107 элементов.

Я пытался решить эту проблему с помощью более сложного фильтра, включающего InstallLocation, и т. д. InstallSource, InstallDateно безуспешно.

решение1

Для меня это прискорбный случайЗакон Конвея. Windows — очень сложная ОС с десятилетиями истории и огромным количеством подвижных частей. Это означает, что то, что кажется простым, например, вопрос «какого черта все установлено на моем компьютере?», к сожалению, становится очень сложным. То, что делает «установленное программное обеспечение» сложным, заключается в том, что оно поступает из нескольких разных источников. Есть 64-битное программное обеспечение, и 32-битное программное обеспечение, и программное обеспечение, которое устанавливается только для определенных пользователей, и программное обеспечение, которое устанавливается для всех пользователей, и программное обеспечение, которое было установлено или назначено вам через групповую политику, и многое другое.

К счастью,Монитор процессов Sysinternalможет раскрыть их все вам. Просто запустите его, отслеживайте события реестра, а затем щелкните апплет панели управления «Установка и удаление программ» самостоятельно и посмотрите, что Windows делает в фоновом режиме.

В нем говорится из разных источников:

HKLM\Software\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\...
HKCU\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\...
HKCU\Software\Microsoft\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\...

И более!

С одной стороны этоявляетсяможно увидеть, какая именно последовательность запросов к реестру требуется для точного восстановления того, что вы видите в «Установке и удалении программ», что является «представлением», основанным на текущем вошедшем в систему пользователе и т. д. С другой стороны, я думаю, вы быстро придете к пониманию того, что этомногоработы и что, возможно, воссоздание точного вида «Установки и удаления программ» изначально не было для вас таким уж важным. :)

Связанный контент