With powershell get exactly the same application list as in Add/Remove programms

Solution 1:

To me, this is an unfortunate case of Conway's Law. Windows is a very complex OS with decades of history and a huge number of moving parts. What this means is that something that seems simple, like asking the question "wtf all is installed on my computer?" is unfortunately made very complicated. The thing that makes "installed software" complicated is that it comes from several different sources. There's 64 bit software, and 32 bit software, and software that's only installed for certain users, and software that's installed for all users, and software that was installed or assigned to you via Group Policy, and more.

Fortunately, Sysinternal's Process Monitor can reveal them all to you. Just fire it up, monitor registry events, and then click the Add/Remove Programs control panel applet yourself, and see what Windows is doing in the background.

It reads from many different sources:

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\...

And more!

On one hand it is possible to see exactly what sequence of registry queries is required to precisely rebuild what you see in "Add/Remove Programs," which is a "view" based on the currently logged on user, etc. On the other hand, I think you will quickly come to the realization that it's a lot of work and that maybe reconstructing an exact view of Add/Remove Programs was maybe not that important to you in the first place. :)