Unattended removal
Uninstall from the command line
Removing an MSI program without clicking through anything takes one command and one product code. Every guide on this teaches you to hunt for the code with Get-WmiObject or in the registry. You do not need to hunt: it is published in the installer manifest, and here it is for 38 programs.
The command
msiexec /x {PRODUCT-CODE} /qn /norestart- /x
- Remove the product. Takes either a product code or the path to the original .msi.
- /qn
- No interface at all. Use /qb while testing so you can see it doing something.
- /norestart
- Never reboot on its own. Removing a program can request a restart, and without this it may take one while someone is working.
- /l*v log.txt
- Verbose log. With /qn there is nothing on screen, so this is the only way to find out why a removal failed.
Product codes, program by program
Each code belongs to the version we index. Read the warning below before you assume it matches what is on your machine.
| Program | Product code | Build |
|---|---|---|
| 7-Zip | {23170F69-40C1-2701-2602-000001000000} | 32-bit |
| blender | {72D5FB89-E923-4FC7-B2DE-14ED7C4B104F} | 64-bit |
| CMake | {8290B40E-B469-415C-9060-4AE4DE263642} | 32-bit |
| Dropbox | {19E6620D-ECB8-55CC-9287-18856FCC08E8} | 64-bit, 32-bit, ARM64 |
| Everything | {B5F500BB-4625-445D-A2E7-E7FE5E1E7E85} | 64-bit |
| Figma | {BDE063B2-459A-4ECE-876D-E449ACCAC237} | 64-bit |
| GitHub Desktop | {77BE69BD-B847-4AAA-8D06-E6C6DDB4B68A} | 64-bit |
| Go Programming Language | {4FFF969B-44D4-46E5-A73A-589331513BDF} | 32-bit |
| Google Chrome | {2B4170D2-F59E-3B8A-BC2E-51DFCA8C25AE} | 32-bit |
| Inkscape | {15D8477C-2591-49DF-B5E9-A69E1CDE95AD} | 64-bit |
| iTunes | {C0E50EBD-FE23-42DE-84C0-D1B593278750} | 32-bit |
| Java 8 | {77824AE4-039E-4CA4-87B4-2F32180501F0} | 32-bit |
| LibreOffice | {E32D32C0-1D1D-4C00-962D-2128A268B092} | 32-bit |
| Malwarebytes | {35065F43-4BB2-439A-BFF7-0F1014F2E0CD}_is1 | 32-bit, 64-bit |
| Microsoft .NET SDK 9.0 | {43876a28-a466-4921-9710-4b889a11554f} | 64-bit |
| Microsoft .NET Windows Desktop Runtime 8.0 | {9999cc20-e1e8-4020-a22a-d027fef027c8} | ARM64 |
| Microsoft .NET Windows Desktop Runtime 9.0 | {b8f78406-caee-4944-aeb6-091410b4e365} | ARM64 |
| Microsoft Edge | {2A194A05-233B-3CCD-AD9E-9164F1C47CAA} | 32-bit |
| Microsoft Visual C++ 2013 Redistributable (x64) | {042d26ef-3dbe-4c25-95d3-4c1b11b235a7} | 64-bit |
| MPC-BE | {903D098F-DD50-4342-AD23-DA868FCA3126}_is1 | 32-bit |
| MPC-HC | {2624B969-7135-4EB1-B0F6-2D8C397B45F7}_is1 | 32-bit |
| Node.js | {16ACB226-F825-4982-A438-4E2A4D52BC44} | 64-bit |
| Notepad++ | {3281C7BA-0E6A-4A32-974C-3BEA51A4632F} | 64-bit |
| NVIDIA PhysX System Software | {B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}_Display.PhysX | 32-bit |
| paint.net | {B33D3774-736A-43FD-BE83-76733BE4CB10} | 64-bit |
| PDF24 Creator | {2B4DC485-D730-49AB-BD17-9E67B2ADA492} | 64-bit |
| PeaZip | {5A2BC38A-406C-4A5B-BF45-6991F9A05325}_is1 | 32-bit, 64-bit |
| PuTTY | {A2D92841-A1FE-436A-8D2C-28EF20ABFCB5} | 32-bit |
| Python 3.13 | {6082f650-e200-4757-af66-d59ffd55a3cf} | 32-bit |
| Tailscale | {88931C5D-EFD2-4A8F-B396-E4D7D19415E8} | 32-bit, 64-bit, ARM64 |
| Transmission | {9A6FE859-BC52-4324-B99A-9F8670C4F55B} | 32-bit |
| VLC media player | {BB07A485-B145-41C5-B5AB-FDBDE0FBC69C} | 32-bit |
| WinDirStat | {EC53D00A-1511-4EB7-A3A3-5E1439E345F4} | 32-bit |
| Windows Subsystem for Linux | {497CB23D-8747-4047-A079-DD98E0EDFC18} | 64-bit |
| WinSCP | {6B3B4018-4030-48D4-8924-F71537247E0D} | 32-bit |
| WireGuard | {B90DE94F-FC4B-4FEF-ACDF-BD2BA2A545FB} | 32-bit |
| Wireshark | {B38825E0-F358-4FEE-B997-A0235B64B2C8} | 64-bit |
| Zoom Workplace | {D8B5D74C-9929-4EE0-BA5F-80D68082E388} | 64-bit |
The product code changes with every version
This is the single thing that makes published codes go stale, and the reason most sites refuse to publish them at all. If the code above does not match what you have installed, msiexec reports that the product is not installed rather than removing the wrong thing, which is a safe failure. Read the code of what is actually on the machine and use that one.
Read the installed code · PowerShell
Get-Package -Name "*7-Zip*" | Select-Object Name, Version, FastPackageReferenceGet-WmiObject Win32_Product is the command every older guide recommends, and it is worth avoiding: it triggers a consistency check on every installed MSI, which is slow and has been known to cause repairs to fire on their own.
When there is no product code
Plenty of programs are not MSI packages, so they have no product code at all. They ship their own uninstaller instead, and its path is in the registry under the UninstallString value.
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object DisplayName -like "*7-Zip*" |
Select-Object DisplayName, DisplayVersion, UninstallStringCheck both paths: a 32-bit program on 64-bit Windows registers under WOW6432Node, and looking in only one of the two is why a program you can plainly see in Settings appears to have no uninstall entry. The silent switch for that uninstaller follows the same rule as installing, so an NSIS program takes /S and an Inno one takes /VERYSILENT.
Questions
How do I uninstall a program from the command line?
For an MSI package, run msiexec /x followed by the product code, with /qn to suppress the interface and /norestart to stop it rebooting. For a program that is not an MSI, read its UninstallString from the registry and run that with the silent switch its installer builder uses.
Where do I find the MSI product code?
It is published in the installer manifest, which is where the codes on this page come from. To read the code of what is installed on a specific machine, use Get-Package in PowerShell rather than Get-WmiObject Win32_Product, which is slow and can trigger repairs.
What does error 1605 mean when uninstalling?
That the product code you passed is not installed on that machine. Almost always it means the installed version differs from the one the code belongs to, since the code changes with every release.
Does uninstalling remove my settings and data?
No. An uninstaller removes what it installed. Configuration and files created afterwards, typically under AppData, are deliberately left behind and have to be deleted by hand if you want them gone.
How do I force uninstall a program that will not uninstall?
First try the msiexec command with the correct product code, which works even when the entry in Settings is broken. If the entry itself is gone, the registry keys under CurrentVersion\Uninstall still hold the UninstallString. Deleting a program folder by hand is the last resort and leaves the machine thinking it is still installed.
Installing rather than removing? The silent install command for every program we index.