
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.
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
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
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.
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.
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
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
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)
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
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
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!
The post How to Get List of Installed Programs in Windows 10? appeared first on TheITBros.