list installed apps windows 10

How to Get List of Installed Programs in Windows 10?


In this simple guide, we will show you two different ways of how to get a list of installed programs in Windows 10, 8 or Windows 7 using 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, audit installed software in inventory scenarios or when you want to find the unwanted programs.

How to Get Windows 10 Installed Programs List?

The easiest way to get a complete list of applications with icons is to press the Win + R key combination and enter the command: shell: AppsFolder.

However, you cannot export this program list to a text file.

how to get a list of installed programs

Let’s see how to get a list of installed programs using the Windows command prompt and using PowerShell.

How to Get a List of Installed Programs by Using Command Prompt Utility WMIC?

The list of programs that installed in the system can be obtained by using WMIC command line utility, that can access the WMI namespace. Run cmd.exe as an administrator and run the following command:

wmic product get name,version

List of Installed Programs Windows 10

After a short wait, you will see a table with a list of names in the console and versions of the programs that installed on your system.

To export this list into a text file, run following command:

wmic product get name,version /format:csv > c:\Distr\InstalledApps_%Computername%.csv

windows 10 list of installed programs

After command execution, open file InstalledApps_* which is located in the folder C:\Dist. In this file in CSV format in addition to programs list will be specified the current computer name (it may be useful for further analysis). Open this file using any text editor (notepad.exe in our example).

As you can see, the resulting table displays the name and the version number of the installed apps.

get list of installed programs windows 10

How to get a list of installed programs in Windows 10 by using PowerShell?

Let’s see how to get a list using PowerShell! The list of programs that user sees in the section Programs and Features of the Control Panel is built on the base of the contents of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

The specified registry key contains only programs installed “for all users” of Windows.

windows 10 program list

Tip. For 32-bit application on 64-bit operating system additionally, you need to get the contents of branch HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

If an application was installed in the “for this user” mode, then it should be present in the registry key:

HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall

Accordingly, to get a complete list of installed software, you will need to scan information from all three branches of the registry.

Let’s get the contents of branch HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\. Open the PoSh console by pressing Win+R key and entering powershell. Then, run the following command:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, Size, InstallDate | Format-Table -AutoSize

windows 10 programs list

As you can see, the resulting list contains the program name, version, publisher and installation date.

To export a list of programs in text file (c:\docs\list-installed-programs.txt), you can use the command as follows:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize > c:\docs\list-installed-programs.txt

The above method can only get a list of the Classical desktop Windows programs, but not the Modern applications from Windows Store 10.

Get-AppxPackage | Select Name, PackageFullName |Format-Table -AutoSize > c:\docs\list-store-apps.txt

get-appxpackage list

To get a similar list of programs from a remote computer, run:

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 C:\Install\list-installed-programs.txt) -DifferenceObject (Get-Content C:\Install\list-installed-programs2.txt)

powershell compare object

As a result, you will see the difference in the two applications lists. In the example in 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 10—to use the Get-WmiObject cmdlet. Simply copy and paste next command:

Get-WmiObject -Class Win32_Product | Select-Object -Property Name

how to find installed programs in windows 10

Get the List of Installed Software on Remote Computers Using PowerShell

The system administrator often needs to check whether a certain program and/or version is installed on your 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 display a window for entering account credentials for authorization on remote computers):

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("\\$Comp\root\default", $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 list installed programs on the current computer, run the command:

Get-InstalledApps

getting a list of installed programs

To get lists of installed software from several remote computers, run the following command:

Get-InstalledApps PCName1,PCName2,PCName3,PCName4

That’s all! Hope this article will be helpful!

You may also like:

How to Reset TeamViewer ID? After installing TeamViewer and first connection to the network, the program receives a unique identification number (ID). It allows remote users to p...
Sysprep Windows 10 Machine: Step by Step Guide In this guide, we will show you how to use PowerShell and Windows System Preparation Tool (Sysprep) to prepare a highly customized, personal Windows 1...
How to Convert ESD to WIM File on Windows 10? In this tutorial, we will show you how to convert ESD to WIM file using Command Prompt. ESD file is a new thing within Windows 10 OS, that Microsoft i...
Add Calendar Permissions in Office 365 via PowerSh... This is a tutorial on how to add calendar permissions in Office 365 for your users via PowerShell. You can add the permissions on a specific user’s ma...
Ping returns IPv6 Address, ping IPv4? If you are on the same network, or VLAN, or subnet as someone else – you will probably notice that if you ping their hostname it will return with an I...
Comments
  1. Posted by Anbu Saravanan
  2. Posted by Vincent Francis
  3. Posted by Ramesh Babu
  4. Posted by Chetra Thon

Add Your Comment