Назад | Перейти на главную страницу

С PowerShell вы получите тот же список приложений, что и в Add / Remove Programs.

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

Например, у меня 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 и т. д. без успеха.

Для меня это неудачный случай Закон Конвея. Windows - очень сложная ОС с десятилетиями истории и огромным количеством движущихся частей. Это означает, что что-то кажется простым, например, задать вопрос «wtf all is installed on my computer?» к сожалению сделано очень сложно. «Установленное программное обеспечение» усложняется тем, что оно поступает из нескольких разных источников. Есть 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\...

И больше!

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