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 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 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 the 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 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 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 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 to 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 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 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 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 an 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:

Sysprep Windows 10 Machine: Step by Step Guide In this article we will show you how to use PowerShell and Windows System Preparation Tool to prepare a highly customized, personal Windows 10 install...
How to Reset TeamViewer ID After installing TeamViewer and first connection to the network, program receives a unique identification number (ID). It allows you to perform a remo...
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 is...
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 permissions onto a specific mailbox, or...
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 a IP...
Comments
  1. Posted by Anbu Saravanan
  2. Posted by Vincent Francis

Add Your Comment