I am trying to get all installed apps in the computers of my domain but i haven't found a way to get the information in an accurate way first i was trying to achieve this through the registry key:


but this returned more info than i need like updates installed. So i searched for another way and I found that the wmi class Win32_product contains all installed apps but after trying with this y have found that the info that recolects is incorrect

enter image description here

¿why there are some apps like google chrome, free proxy, dell system diagnostics, that does not appear when querying the class?

In this link is the answer for this question

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

¡there is a way to accurately get all installed applications in windows via powershell or command line?


The WMI class Win32_Product uses the MSI provider to collect installed program data. This means you're only going to get data on software/packages installed using MSI. Further, calling this class causes a repair action to be executed on every program it returns. Most of the time this isn't an issue, but it will fill up the event log and can cause issues for some software. You can get more detail on this link: Win32_Product Class

Most scripters, coders, etc use one of two things; 1) Registry Query, 2) WMI query of the SCCM class SMS_InstalledSoftware. Obviously the SCCM class requires SCCM to be installed on the host. You can read more about that HERE. So that really only leaves the registry query for most folx. Don't fret though, because all the work was already done for you by TSG.

Your pot of gold is "Use PowerShell to Quickly Find Installed Software"

While I'd do things slightly differently than in that post, it has all the heavy lifting already written. With a little aptitude and some google searching you can customize as you wish.

| improve this answer | |

I'm not sure if you're intentionally ignoring 64-bit software, but keep in mind that the SOFTWARE\Wow6432Node is only supposed to be for 32 bit software running on a 64 bit machine. You also have HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

If you want all software, you'll need to aggregate a few methods/sources. Those two keys should have most, if not all. You must also consider HKEY_USERS[each user]\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ and its Wow6432Node counterpart. Applications like DropBox, sometimes google chrome, and a few others are installed only in the user environment. I suspect this is also why the Win32_Product does not have those specific packages.

For filtering your aggregated list, there isn't a simple way. You could exclude those with the key System=1 or Publisher="Microsoft Corporation" (double check the key name; I may have remembered wrong). Those keys are used in some non-essential software too, though.

| improve this answer | |

Wmic might useful tool for this. For example : wmic product get Name, Version.

C:\Windows\System32>wmic product get Name, Version
Name                                                                     Version
    Windows 7 USB/DVD Download Tool                                          1.0.30
    Microsoft Office OneNote MUI (English) 2010                              14.0.70
    Oracle VM VirtualBox 5.0.10                                              5.0.10

Beaware that this command might fail listing some installed programgs. For me on Windows 7 it does not see that Opera is installed.

There also many options for formatting the output: http://www.pearsonitcertification.com/articles/article.aspx?p=1700427&seqNum=4

| improve this answer | |
  • 1
    Using wmic is the same as using get-wmiobject so it must bring the same incomplete information – kimo pryvt Dec 21 '15 at 7:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.