sodcalculator

10 Tech How-To

List Installed Programs in Windows: 10 Ways

Guide 10-16650 · Updated · Step by step

This guide covers ten reliable ways to generate a list of installed programs on Windows, from built-in tools like PowerShell and the Registry to third-party utilities. It’s for anyone who needs an inventory for audits, troubleshooting, or migration—whether you’re a system admin or a curious user.

1. Settings App (Windows 10/11)

The quickest built-in method is to open Settings > Apps > Installed apps (Windows 11) or Apps & features (Windows 10). You’ll see a scrollable list with app names, sizes, and install dates (Windows 11). It’s worth it for a visual, human-readable list, but it doesn’t include classic Win32 programs that don’t register as “apps,” and there’s no easy export option.

2. Control Panel (Programs and Features)

Open Control Panel > Programs > Programs and Features. This shows a classic list of installed applications with Name, Publisher, and Installed On columns. It’s more complete than Settings for traditional desktop software, but it misses UWP/Store apps. To export, you can copy-paste the list into a text file or spreadsheet—just select all rows, copy, and paste.

3. Command Prompt with WMIC

Run wmic product get name,version,vendor in Command Prompt (as administrator) to list installed programs with their versions and vendors. WMIC is deprecated in newer Windows versions but still works on most systems. It’s useful for scripting, but it can be slow because it queries the Windows Installer database, and it only shows MSI-installed programs—not all software.

4. PowerShell with Get-Package

Use Get-Package | Format-Table Name,Version in PowerShell to list installed programs from multiple sources, including MSI and Store apps. This cmdlet is part of the PackageManagement module and is faster than WMIC. You can pipe to Export-Csv to save the list: Get-Package | Export-Csv -Path programs.csv. It’s a solid built-in option for both GUI and CLI users.

5. PowerShell with Win32_Product

Run Get-WmiObject -Class Win32_Product | Select-Object Name,Version,Vendor in PowerShell. This queries the Windows Installer database and gives detailed info, but it’s notoriously slow and can trigger a configuration check on each MSI package. Avoid it for large inventories; use it only when you need specific MSI properties that other methods don’t provide.

6. Registry Editor (Uninstall Keys)

Open regedit and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall (and the WOW6432Node variant for 32-bit apps on 64-bit systems). Each subkey represents an installed program, with values like DisplayName and DisplayVersion. This is the most raw and complete source, but it’s hard to read manually. You can export the key as a .reg file, but parsing it requires scripting.

7. PowerShell with Registry Access

Use a PowerShell one-liner to read both 64-bit and 32-bit uninstall keys and output a clean list: Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName} | Select-Object DisplayName, DisplayVersion, Publisher | Sort-Object DisplayName. This is faster and more complete than Win32_Product, and it includes both MSI and non-MSI programs. It’s the best built-in method for scripting.

8. Command-Line Tools (winget list)

If you have the Windows Package Manager (winget) installed, run winget list in PowerShell or Command Prompt. It shows programs that winget knows about, including Store apps and some traditional installers. The output is clean and can be exported with winget list --output-format json. It’s not a complete inventory—some legacy software won’t appear—but it’s handy for quick checks.

9. Third-Party Utilities (e.g., CCleaner, GeekUninstaller)

Tools like CCleaner (Tools > Uninstall) or GeekUninstaller provide a user-friendly list of installed programs with sizes and install dates. They often show entries that Windows hides, like driver packages and Windows updates. These are worth it for non-technical users who want a clean, sortable interface, but be aware that some free versions include bundled offers during installation.

10. Export with PowerShell to CSV or Text

Combine any of the above methods with an export command to create a reusable file. For example, Get-Package | Export-Csv -Path $env:USERPROFILE\Desktop\installed.csv -NoTypeInformation saves a CSV you can open in Excel. This is the most practical approach for audits or comparing systems. Use the registry method for the most complete data, and remember to run PowerShell as administrator to avoid access errors.

How to Choose

The best method depends on your needs. If you want a quick visual list, use Settings or Control Panel. For scripting or exporting, PowerShell with registry access offers the best balance of speed and completeness. Avoid WMIC and Win32_Product for large inventories due to performance. Third-party tools are fine for personal use but not ideal for automation. Always run your chosen command as administrator to ensure you see all programs.

Frequently Asked Questions

Why do some programs not appear in Settings?
Settings only shows modern UWP apps and some MSI-installed programs. Traditional Win32 software often appears only in Control Panel or the registry.

How do I export the list to a file?
Use PowerShell: Get-Package | Export-Csv -Path list.csv or redirect the output of any command to a text file with > list.txt.

Why is WMIC slow?
WMIC’s product class queries the Windows Installer database, which triggers a consistency check on every MSI package, causing delays.

Can I list installed programs on a remote computer?
Yes, with PowerShell remoting: Invoke-Command -ComputerName PC01 -ScriptBlock {Get-Package}. You need admin rights and WinRM enabled.

Are there any programs that won’t show up in any list?
Portable apps that don’t install to the registry won’t appear. Also, some drivers and updates are listed separately in the registry, not as regular programs.

Final Thoughts

Generating a list of installed programs is straightforward once you know the right tool. For most users, the Control Panel or Settings is enough. For admins, PowerShell with registry access is the most efficient and complete method. Choose one that fits your technical comfort and the purpose of the list, and you’ll have your inventory in minutes.

Related

General steps for current mainstream versions; menus can differ by device and version. See the disclaimer or report an error.

More in this bed

The whole Tech How-To bed →