OpenUninstaller helps you inspect installed software, run its registered uninstaller, and review the files and registry entries left behind. It combines installation traces with heuristic scanning, shows the evidence for each candidate, and backs up approved uninstall leftovers before deletion.
The WPF desktop application and command-line interface share the same core services. OpenUninstaller runs locally, includes no telemetry, and has no third-party runtime UI dependencies.
Light and dark themes share a restrained layout, searchable inventories and consistent controls. The application inspector can be resized; secondary instructions stay out of the main workflow.
OpenUninstaller 1.0.6 · Screenshots use sample data. Images follow your GitHub light or dark theme.
| Area | Capabilities |
|---|---|
| Applications | Search installed programs, inspect metadata, export inventory and queue multiple uninstalls for individual review. |
| Leftover review | Inspect files, folders, registry keys and values, shortcuts, services and scheduled tasks with confidence and evidence. Ignore candidates or compare scans. |
| Installation tracing | Capture registry and filesystem changes around an installer; import and export portable .outrace.zip bundles. |
| Store apps | Inspect Microsoft Store/MSIX packages, open their locations, and uninstall, reset or terminate selected packages. |
| Startup management | Review startup entries, services and scheduled tasks; disable supported entries and restore their recorded state. |
| Junk files | Scan supported cache and temporary-file locations, review categories and preview cleanup with dry run. |
| Privacy tools | Review Windows history and supported browser data; shred selected files or wipe free disk space. |
| Backups | Inspect backup contents, preview a restore and restore captured uninstall leftovers. |
| Windows tools | Launch built-in administrative utilities and add custom shortcuts. |
| Hunter mode | Select a window to identify its process, executable and matching installed application. |
| Maintenance | Configure an optional Windows service for backup retention, log expiry and supported cleanup tasks. |
See the capability matrix for implementation details and boundaries.
|
Autoruns — review startup entries, services and tasks. ![]() |
Junk files — inspect cache categories and preview cleanup. ![]() |
|
Store apps — inspect packages and their available actions. ![]() |
Backups — review recovery history before restoring. ![]() |
|
Privacy & shredder — review history and file-shredding targets. ![]() |
Windows tools — find built-in administrative utilities. ![]() |
|
Settings — choose appearance, language and cleanup preferences. ![]() |
Hunter mode — identify a window's process and executable. ![]() |
Choose an installer or portable archive from GitHub Releases.
- Installer: Run
OpenUninstaller-<version>-setup.exe. Per-user installation is the default;/ALLUSERSselects machine-wide installation. - Portable: Extract the archive and run
OpenUninstaller.exe. The command-line executable is incli\oucli.exe; the optional service is inservice\.
Self-contained release packages include the .NET runtime. See the installation guide for deployment options and silent installer flags.
- Windows 10 version 1809 or later, or Windows 11, on x64.
- Standard user access for user-scoped operations. Machine-wide changes and service management require administrator rights.
- The .NET 8 SDK to build from source; the .NET 8 Desktop Runtime for framework-dependent desktop builds.
- Find an application in Programs and inspect its details.
- Choose Uninstall to run the registered vendor uninstaller.
- Review the leftover scan, including each candidate's evidence and confidence.
- Confirm the selected cleanup. OpenUninstaller captures a backup before deleting approved leftovers.
You can also run a leftover scan without uninstalling. Forced uninstall is intended for stale registrations when the normal uninstaller is unavailable; removing a registration does not itself uninstall the application.
Path and registry guards reject protected targets. Uninstall leftover deletion requires a backup, and a failed capture prevents that item from being deleted. Heuristic matches still need review; a confidence score is evidence to consider, not proof that an item is unused.
Privacy cleanup, cache cleanup, shredding and free-space wiping have different recovery properties. Privacy history and shredding deliberately do not keep copies of the data being removed. Review the confirmation and dry-run options for the operation you choose. Overwriting files or free space cannot guarantee erasure on SSDs, journaled filesystems or existing backups.
Application data, traces, backups and logs stay on the local machine. OpenUninstaller includes no automatic network requests or telemetry; vendor uninstallers and Windows utilities you launch retain their own behavior.
Read the safety model and user guide before using cleanup or recovery tools.
Use cli\oucli.exe from a portable release, or run the CLI project from source:
dotnet run --project src/OpenUninstaller.Cli -- helpThe following examples assume oucli is on your PATH. Otherwise, replace oucli with .\cli\oucli.exe from the extracted release folder.
Common inspection commands:
# Inventory and environment
oucli doctor --json
oucli list --json --filter "Visual Studio"
# Review leftover candidates without uninstalling
oucli scan-leftovers "Example Application" --json
oucli scan-leftovers "Example Application" --diff
# Inspect startup entries, Store apps and cleanup categories
oucli autoruns list --json
oucli store list --json
oucli junk scan --json
oucli privacy scan --json
# Inspect saved evidence and recovery options
oucli traces list --json
oucli backups list --json
oucli backups preview <backup-id> --jsonCommands that require confirmation document their --yes option in oucli help. The command-line section of the user guide covers operations that change system state.
On Windows with the .NET 8 SDK:
git clone https://github.com/eco-null/OpenUninstaller.git
cd OpenUninstaller
dotnet restore OpenUninstaller.sln
dotnet build OpenUninstaller.sln -c Release --no-restore
dotnet run --project src/OpenUninstaller.App -c Release --no-buildThe SDK version and roll-forward policy are defined in global.json.
dotnet test OpenUninstaller.sln -c Release --no-build
dotnet run --project tests/OpenUninstaller.UiSmoke -c Release --no-build -- `
src/OpenUninstaller.App/bin/Release/net8.0-windows/OpenUninstaller.exeCore tests use isolated temporary directories and registry subtrees. The UI smoke runner visits all eight screens in both themes at standard and compact window sizes, checks search and selection behavior, and verifies that removed decorative labels stay absent. It reads local inventories without invoking uninstall or cleanup actions.
./scripts/package-release.ps1 -Runtime win-x64This publishes the desktop app, CLI and maintenance service, then creates a portable archive and SHA-256 checksum. The release guide covers installer builds and signing.
| Project | Responsibility |
|---|---|
OpenUninstaller.Core |
Inventory, scanning, guards, backup/restore, tracing and maintenance services. |
OpenUninstaller.App |
Native WPF desktop interface and view models. |
OpenUninstaller.Cli |
Command-line access to the shared core. |
OpenUninstaller.Service |
Optional Windows background maintenance host. |
OpenUninstaller.Tests |
Core and CLI regression tests. |
OpenUninstaller.UiSmoke |
Read-only desktop interaction checks. |
Runtime projects use the .NET libraries and Windows APIs. Test-only packages are declared separately in the test project.
- User guide
- Capabilities and boundaries
- Safety model
- Scanning algorithms
- Architecture
- Installation
- Release workflow
- Design system
- Changelog
Read CONTRIBUTING.md and the contributor guide before submitting a change. For bug reports, include the application version, Windows version and steps to reproduce; remove private paths or application data from shared logs.
See SUPPORT.md for support channels and SECURITY.md for vulnerability reporting.
MIT.








