In this simple guide, we will show you a few different ways how to get a list of installed programs in Windows 11, 10, 8, or Windows 7 using various tools, including built-in command-line tools. When it may be necessary? For example, the list of all installed programs can be useful when you re-install Windows and want to make sure you do not miss all the necessary apps. Also, a list of all installed apps in Windows will come in handy when you perform an audit, or when you want to find and remove unwanted programs. You will also find a list of all installed programs useful if you accidentally deleted a shortcut or can’t find some specific app.
How to Get Windows 10 Installed Programs List? Through Apps Folder.
The easiest way to get a complete list of applications with icons is to press the Win + R keys on your keyboard and then enter the following command:
shell:AppsFolder
It is particularly important to enter this command without any spaces, otherwise, it won’t work.
Do note that in the bottom-left corner you can find the total number of installed apps in Windows. For your information: this number includes all the default Windows utilities, such as Control Panel, Disk Cleanup, Cortana, etc. In case you want to know the number of installed apps in Windows 10, use the next method.
Although simple, this method has one critical downside: you cannot generate a list of installed apps in Windows 10 from here. This folder only shows all the shortcuts you can copy or use to launch any installed app.
Get a List of All Installed Apps using Windows Settings
If you are running Windows 10 and 11, there is a very convenient section inside the modern Settings panel. It collects info about all installed apps and lets you quickly get a list of them. To get there, hit Win + I on your keyboard and go to Apps – Apps and features.
Or press Win + R and run the command:
ms-settings:appsfeatures
Here you can find the list of all installed apps including modern UWP apps from the Microsoft Store. This list does not include built-in Windows tools. At the top of the list, you can find the app counter.
What is also important is that this section allows you to filter the list and generate a list of all apps installed on a specific disk. For example, you want to find all the apps installed on a system drive. Just hit Filter by and select your system’s drive.
Here you can easily find recently installed programs. To do this, simply sort the list by Install date. As a result, the last installed programs in Windows will be at the top of the list.
Again, this section cannot generate a file with a list of all installed apps on a computer.
Generate a List of All Installed Apps in Windows 10 and 11
Ok, now let us talk about how you can generate a list of all installed apps in Windows 10 and 11 (works in older Windows versions down to Windows XP) and export it to use later. We will cover the built-in utilities below in this article, but here let us show you a wonderful tool called UninstallView. This utility is completely free and does not require installation. All you need is to download the UninstallView from the official website and launch it.
For your information. By default, UninstallView shows only win32 apps which is more than enough for most users. You can toggle it to show apps from Microsoft Store, but it is not very friendly with this type of app. For example, each DLC in Forza Horizon 4 shows as a separate app which is not ok for us. You can load Microsoft Store apps using Options – Load Windows Apps menu.
Ok, launch the app and wait a few seconds for the app to generate the list. Now you can export and save it for later use.
- If you want to generate a list of all installed apps with all the details (version, path, registry key, and many others), skip the next step. If you want only the editable text file with a list of installed programs, perform the following steps;
- Press View – Choose Columns;
- In a new window, select Deselect all and place a checkmark next to the Display name. This will leave only a list of apps names;
- Now, press Ctrl + A and then hit Save selected items;
- Name the text file and place it wherever you want, then open it. Now you have a complete list of all installed apps on a computer. You can edit it as any text file;
How to Get a List of Installed Apps with Command Prompt and WMIC?
You can get a list of installed apps in Windows by using the WMIC command-line tool, which can access the computer’s WMI namespace. Run the elevated Command Prompt (use search and then run the app as Administrator), and execute the following command:
wmic product get name,version
After a short wait, you will see a table with a list of names and versions of programs installed on your system.
Wmic allows you to query remote computers through WMI. The following command lists the installed applications on the remote host:
Wmic /node:NyPC211swd product get name, version, vendor
To export this list into a text file, run the following command:
wmic product get name,version /format:csv > C:\InstalledApps_%Computername%.csv
This command generates a CSV file with your computer name in the title. After command execution, open drive C. There you will find a CSV file with the list of your apps. In addition to the app’s names and versions, this list has the current computer name (it may be useful for further analysis or when you need to generate installed program lists from a few computers). Open this file using any text editor or Excel.
Also, in modern Windows versions the WMIC utility allows you to generate a convenient HTML report:
wmic /output:c:\IstalledApps.htm product get Name, Version, Vendor /format:htable
Use PowerShell to Get a List of Installed Programs in Windows
Now, let us show you how to get a list of installed apps using PowerShell. PowerShell gets this list by scanning a special registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. The Control Panel uses the same registry to generate the list of installed apps, although you cannot export this list. Do note that this registry key contains only programs installed “for all users”.
For your information. For a 32-bit application on a 64-bit operating system, you need to get the content of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
If an application was installed for the current user, then you can locate it using the following registry key HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall.
Running all three separate commands is not convenient, so let us show how to run them all simultaneously, so you can get the list of all apps installed on a PC:
- Press Win + X on your keyboard and launch the PowerShell (Admin);
- To generate a list of installed x64 applications, copy and paste the following command to the PowerShell’s window:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize
- To get a list of 32-bit applications on your Windows device run then the following PowerShell command:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | sort-object -property DisplayName | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
- As you can see, the resulting list contains the program name, version, publisher, and installation date.
You can use the following PowerShell script to generate a summary list both of x86 and x64 installed applications and export it to a CSV formatted file:
function Analyze( $p, $f) { Get-ItemProperty $p |foreach { if (($_.DisplayName) -or ($_.version)) { [PSCustomObject]@{ From = $f; Name = $_.DisplayName; Version = $_.DisplayVersion; Install = $_.InstallDate } } } } $s = @() $s += Analyze 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' 64 $s += Analyze 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' 32 $s | Sort-Object -Property Name |Export-csv C:\ps\installedapps.csv
To get a similar list of programs from a remote computer, run this command:
Invoke-command -computer remote_pc_name {Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize }
With PowerShell, you can compare the list of installed programs on two different computers and determine which apps are missing. Just take two software text files and add their names to this command:
Compare-Object -ReferenceObject (Get-Content PATH) -DifferenceObject (Get-Content PATH)
Instead of PATH, use the full file paths. For example, C:\Docsfile.txt.
As a result, you will see the difference between the two application lists. In the example depicted on the screenshot, you can see that different versions of Firefox are installed on the computers. The symbol => means that this program is only available on the right computer. The <= symbol indicates that this program is installed only on the left computer.
Another way to get a list of installed programs in Windows is to use the Get-WmiObject PowerShell cmdlet. Simply copy and paste the following command:
Get-WmiObject -Class Win32_Product | Select-Object -Property Name
In PowerShell Core 6.x and 7.x, Get-WmiObject is completely deprecated and you must use the Get-CimInstance cmdlet to query the list of installed win32 applications:
Get-CimInstance Win32_Product | Sort-Object -property Name | Format-Table -Property Version, InstallDate, Name
Getting the List of Installed Microsoft Store Apps
The methods above generate only a list of win32 apps, also known as classic desktop Windows programs. If you need to generate a list of Universal Windows Platform (UWP) apps (formerly Windows Store apps and Metro-style apps) for the current user, use the following command:
Get-AppxPackage | Select Name, PackageFullName |Format-Table -AutoSize > c:\docslist-store-apps.txt
If you want to get a list of all Microsoft Store apps of all the users on the current devices, then use the below command:
Get-AppxPackage -AllUsers | ft Name, PackageFullName –AutoSize
Use New Get-Package Cmdlet to Get a List of Installed Apps in Windows
All the methods we have discussed above for getting a list of installed programs in Windows are not universal enough. Some don’t display UWP applications, others don’t display apps in the user profile (like browsers), or do not display x64 programs. In addition, the wmic tool and the Get-WmiObject and Get-CimInstance cmdlets are extremely slow.
In new versions of Windows 10/11 and Windows Server 2022, you can use the new generic Get-Package cmdlet from the PackageManagement module. This cmdlet allows you to display a list of installed programs on the computer.
Its main advantage is that it can get app info from all existing package providers installed on the computer. You can list the available providers like this:
Get-PackageProvider
- Programs
- Msi
- Msu
- PowerShellGet
- NuGet
The list may include other package providers installed on the computer, such as Chocolatey, winget, and PSModule. After installing any of these providers, in the list of installed programs the Get-Package command will return all applications that are deployed using the new providers .
To list the programs installed on your computer, run just one PowerShell cmdlet:
Get-Package
As you can see, the command returned desktop apps, installed via MSI packages, installed Windows Security Updates (MSU), available PowerShell modules (installed from PSGallery), and Microsoft Store apps.
You can display only certain columns containing information about the installed program. Using the Export-Csv cmdlet, you can immediately save the list of programs to a CSV file:
Get-Package |select Name, Version, Status, ProviderName, Source, FromTrustedSource, FastPackageReference| Export-Csv -Encoding utf8 -delimiter ";" -Path c:\ps\getapplist.csv
You can display only programs installed via a specific provider:
Get-Package -ProviderName Programs -IncludeWindowsInstaller
To get a list of installed programs on a remote computer, you need to use PSRemoting:
Invoke-Command -ComputerName "MYServe01" -Credential "THEITBROS\User2022" -ScriptBlock {Get-Package}
Get the List of Installed Software on Remote Computers Using PowerShell
System administrators often need to check whether a certain program and/or version is installed on network computers. For example, you can check if an important Windows update is installed or if all workstations have the correct version of MS Office.
Usually, for the remote inventory of remote computers we use the following PowerShell script (if this account doesn’t have permissions to connect remotely to a computer, the script will ask you to enter the credentials):
Function Get-InstalledApps { [CmdletBinding()] param ( [Switch]$Credential, [parameter(ValueFromPipeline=$true)] [String[]]$ComputerName = $env:COMPUTERNAME ) begin {$key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"} process { $ComputerName | Foreach { $Comp = $_ if (!$Credential) { $reg=[microsoft.win32.registrykey]::OpenRemoteBaseKey('Localmachine',$Comp) $regkey=$reg.OpenSubKey([regex]::Escape($key)) $SubKeys=$regkey.GetSubKeyNames() Foreach ($i in $SubKeys) { $NewSubKey=[regex]::Escape($key)+""+$i $ReadUninstall=$reg.OpenSubKey($NewSubKey) $DisplayName=$ReadUninstall.GetValue("DisplayName") $Date=$ReadUninstall.GetValue("InstallDate") $Publ=$ReadUninstall.GetValue("Publisher") New-Object PsObject -Property @{"Name"=$DisplayName;"Date"=$Date;"Publisher"=$Publ;"Computer"=$Comp} | Where {$_.Name} } } else { $Cred = Get-Credential $connect = New-Object System.Management.ConnectionOptions $connect.UserName = $Cred.GetNetworkCredential().UserName $connect.Password = $Cred.GetNetworkCredential().Password $scope = New-Object System.Management.ManagementScope("$Comprootdefault", $connect) $path = New-Object System.Management.ManagementPath("StdRegProv") $reg = New-Object System.Management.ManagementClass($scope,$path,$null) $inputParams = $reg.GetMethodParameters("EnumKey") $inputParams.sSubKeyName = $key $outputParams = $reg.InvokeMethod("EnumKey", $inputParams, $null) foreach ($i in $outputParams.sNames) { $inputParams = $reg.GetMethodParameters("GetStringValue") $inputParams.sSubKeyName = $key + $i $temp = "DisplayName","InstallDate","Publisher" | Foreach { $inputParams.sValueName = $_ $outputParams = $reg.InvokeMethod("GetStringValue", $inputParams, $null) $outputParams.sValue } New-Object PsObject -Property @{"Name"=$temp[0];"Date"=$temp[1];"Publisher"=$temp[2];"Computer"=$Comp} | Where {$_.Name} } } } } }
To generate a list of installed programs on the current computer, run the command:
Get-InstalledApps
To get lists of installed software from several remote computers, run this command:
Get-InstalledApps PCName1,PCName2,PCName3,PCName4
That is all! Hope this article will be helpful!
4 comments
the wmic/ciminstance stuff is reliable but it’s also extremely slow. give get-package a try.
@Daniel Reynolds thanks for the tip about the uninstall
I had to fix this line
begin {$key = “SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”}
to be
begin {$key = “SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\”}
and then it worked.
Also I was able to substitute “Displayversion” for “InstalledDate” to get the versions of the software installed which was helpful for me.
How do I get WhatsApp installed on this computer
Awesome!
You’ve providing well explanation and solution for this issue.