Last month my laptop told me a McAfee app was installed. 57.8 MB, sitting right there in the programs list. When I told my software to remove it, the removal failed with a strange error: the uninstaller doesn't exist.
I went looking. The uninstaller wasn't the only thing missing — the program's entire folder was gone. C:\Program Files\McAfee\WebAdvisor: not there. There was no program at all. How long it had been gone I can't even tell — nothing was left to date it by. And yet Windows listed it, with a size, as confidently as it listed Chrome.
I was staring at what I now call a ghost entry — and once you know they exist, a lot of weird uninstall behaviour suddenly makes sense.
How a ghost happens
Here's the thing about the "Installed apps" list: Windows never checks the disk to build it. It reads a list of registry entries — one key per program, containing a name, a size, and the command to run for uninstalling. Install a program, it writes its key. Uninstall it properly, the key gets deleted.
But files and registry can drift apart. A vendor's cleanup tool deletes the files and forgets the key. An uninstall crashes halfway. Someone (fine: me, years ago, before I knew better) deletes a program folder by hand to "uninstall" it. In every case the files are gone, the key stays — and Windows keeps announcing a program that no longer exists. Forever. The ghost on my machine had quietly survived every update and cleanup between then and now.
And clicking Uninstall on a ghost can never work: Windows runs the uninstall command from the registry key, which points at an .exe that isn't there. Depending on the program you get an error, or — more maddening — nothing at all.
Confirming you have one
Before treating an entry as a ghost, prove it — a live program misjudged as a ghost would get its listing deleted while its files stay, which is the same mess in the other direction. Two checks:
- The folder. Find where the program claims to live (usually under
C:\Program FilesorC:\Program Files (x86)) and look. Ghost: the folder is missing or empty. - The uninstaller. In regedit, under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall(and itsWOW6432Nodetwin), find the key whose DisplayName matches, and read its UninstallString. Ghost: the file that command points at doesn't exist.
Both true? There's no program. There's only paperwork.
The fix — and the right amount of caution
The fix is deleting that one registry key. That's all a ghost is. With the files already gone, the key is purely a listing record — removing it changes nothing except the lie in your apps list.
The caution: delete exactly that key and nothing else. Right-click the single key you verified (the one whose UninstallString points nowhere) → Delete. Don't go hunting for the program's name across the whole registry, and skip the "registry cleaner" apps that promise to fix thousands of "errors" in bulk — a ghost is one specific, verified key, and one-key surgery is the entire job. If regedit isn't your comfort zone, that's a reasonable place to stop and let a tool with guardrails do the verification and the deletion for you.
Ghosts turn up more often than you'd guess, by the way — security software leaves them (my McAfee one is a classic; their own cleanup tool likely removed the files years ago and missed the key, a story I tell in full in the McAfee removal guide), and so do preinstalled vendor apps that got half-cleaned at some point. If a machine has been through a few years and a few cleanups, checking for ghosts is worth two minutes.
The reason I can tell this story precisely: I'm building RBS Debloater, a free cleanup tool, and my own laptop's ghost is what taught it the trick. It now runs both checks automatically — uninstaller on disk? folder on disk? — and only when a program is provably gone does it clean the leftover entry, telling you exactly that in plain words. Free on this site soon.