The purpose of this article is to suggest some tips for common messed up installations and uninstallations, and related registry entries.
If you have a windows machine with reported duplicate programs, phantom (missing) programs, or programs that refuse to uninstall, these are the instructions for you.
I thought I deleted this program?
Tips for a clean uninstallation
Remove a duplicate entry or entry referring to a program that is no longer there.
Can't find the entry in the registry
What are all these other entries?
The file used for uninstalling is gone
A few more things and recaps
1. I thought I deleted this program?
Every now and then, the user might try to repair a program installation by installing it again, or might uninstall it by deleting related files, instead of going through the Add/Remove Programs dialogue (or Programs and Features in Vista). Sometimes, programs simply aren't well enough programmed that they can update themselves without leaving behind traces of old installs. (Personally I hate the way Java leaves on all old versions when you get the latest version. This should at least be an option, with the default set to not keep old versions - something that only Java developers would have to worry about.)
Anyways, this creates quite a mess in the registry, and in Add / Remove Programs. Sometimes you get "Phantom Programs" that appear in the list, but cannot be run, or are reported as "missing".
It takes a while to get a hang of how windows deals with program installations and uninstallations. One of the biggest faults is that the onus is completely on the program to know everything it's putting on the computer, and to take it off again when the user wants to get rid of it. If the user deletes everything they can find about a program including the uninstaller, then all hope might be lost in truly getting rid of the program's footprint.
I'm probably going to say this 5 times throughout this article, but that's only because it's so important: If you're going to be messing with the registry (regedit.exe or otherwise), you had better know what you're doing. I know what I'm doing, and even I get nervous, because I know what can go wrong. Back up the registry keys you change, back up everything, and make sure your back up worked before making changes! Essentially, to do this, you select the key you're about to change and then File > Export it somewhere. Name is in a way that you'll remember what it is for. If something goes wrong, put things back the way they were by double clicking the exported entry to add it back to the registry. More detailed instructions on the backup process is in a link in the references section.
3. Tips for a clean uninstallation
So you're cleaning out unwanted programs from your computer. Well, of course, try to use Add / Remove Programs first. It may be slow, and less convenient than deleting a shortcut off your desktop, but it's thorough and usually does the job right. This article is geared toward situations when Add / Remove Programs fails, but it's worth mentioning right now that if you haven't already tried it, this is what you should be doing first. How does it know what there is to uninstall and how to do so? Well, what little it does know, it gets from the registry, which can be seen by clicking Start > Run..., then typing "regedit" and hitting enter.
A 'list' of installed programs is in the Registry at: HKLM\Software\Microsoft\Wi
(Where HKLM is HKEY_LOCAL_MACHINE). Unfortunately, few of the installed programs reveal themselves as an appropriately named key. You may need to use the Registry Editor's 'Find' feature to look for the program. The image below highlights some key fields containing good information to search for.
4. Remove a duplicate entry or entry referring to a program that is no longer there.
First common problem: When a program appears twice in the Add/Remove Programs List, it's not only annoying, but they often are both for the same uninstaller. If you actually do uninstall one of them, the other entry will stay there, and it will often say "An error occurred when trying to remove *. It may have been already uninstalled. Do you wish to remove it from the list?"
Especially if you don't actually want to remove the program, just get rid of the duplicate entry, this is the method that you should use to fix duplicates. First, search for the duplicate entry. Make sure you find two keys pointing to the same program and uninstaller. This will confirm that the entries are duplicates and one can be removed. BUT
- always always always back up the keys before you do anything. The registry is a finicky thing and you want to be very sure that any action you take is reversible in the event that something goes wrong. If you have a bad track record with computers, don't just back up the key you're about to delete, back up the entire registry. You can do this by using the 'Export' menu option. Now that that disclaimer is out of the way, back to that duplicate entry. If you found it, delete whichever one 'rubs you the wrong way', or flip a coin. If you didn't find it, well, dig deeper:
5. Can't find the entry in the registry?
Recently I had a case where I couldn't find the duplicate entry. It turns out that the list also populates based on keys that can be found under HKU (HKEY_USERS). If you search HKEY_Users, you might find that under one of the sub-folders here, there's another Software/Microsoft/Windows
stall that contains installation entries. When there's a duplicate entry and you can't figure out where it's coming from, it's probably in there. I think this is where install keys go when you select "Install this program just for me", instead of "for all users on this computer" - an option provided with some installers. In any event, if I had to choose between which duplicate key to delete, I'd pick the one in HKU.
6. What are all these other entries?
You can also find by snooping through the Uninstall directory that there are dozens if not hundreds of programs apparently installed that don't appear in the Add / Remove Programs list. This is either because they are updates (only visible if you click 'show updates' in Add / Remove Programs), or intentionally hidden, or the programmer messed the entry up by not giving it the proper sub-keys. Whatever the reason, you can usually find all sorts of software that you didn't know you had actually installed, but that are removable if you look at the "UninstallString" key and run the value from the command line. If you're an optimization freak like me and are obsessed with removing everything on your computer that you don't use and isn't critical to the system, this is a good place to go fishing for garbage.
An example of the "UninstallString" key is in the registry entries for installed programs image
. You can copy the value, and paste it into Start > Run... or a command prompt window to try and uninstall it 'manually'. Careful though, if you use Run..., it might happen in a flash and close before you see what the status is, if you do it in a command prompt window, then you actually get to see whether the uninstall was successful.
By the way, that uninstall string is how the system knows to uninstall the program. If the program messes up what goes in that string, then the system is at a loss for how to install it and will, at best, offer to remove the entry from the Add / Remove Programs List (and registry). This definitely doesn't mean it's gone, and if you're trying to get rid of a virus or adware masking as a program, there's almost zero point in trusting it's uninstaller, (and in fact they are often made to toss an error so that you can never actually uninstall it).
7. The file used for uninstalling is gone
If you have (or something else has) deleted the file pointed to by the UninstallString key, you are out of luck for doing a proper uninstallation, unless (potentially) you try reinstalling the program again first. That's why it's never a good idea to do a 'manual uninstall', which consists of deleting all related files you can track down. The only time to start doing that is if the installer itself is bogus or failing. Also, be careful about simply 'searching the registry and deleting anything having to do with the program'. Sometimes, references to the program in the registry are put there by the operating system and deleting them will mess with it. Again, double check everything you're about to delete, and back it all up.
An example of when this strategy is necessary was that the uninstaller for SQL 2008 would crash on me no matter what I tried. I even tried first repairing and reinstalling, but the program could not remove itself no matter what. I had to do things the ugly way, including finding and removing its uninstall keys in the registry - but this was absolutely my last resort.
8. A few more things and recaps
If searching for the key associated with a specific entry in the Add / Remove Programs list, you'll want to be looking at the DisplayName value in each key.
Back up any part of the registry you touch, and only change one thing at a time before testing that everything still works fine.
, but something everyone should be aware of:
Sometimes your computer gets into one of those states where your can't run .com or .exe files, or most other file types for that matter. This is a thing that can happen when being careless with the registry, manually editing it, or restoring your computer while a registry monitor is going active. If you can't even get anything going, start windows in Command Prompt mode is your friend. Here, you will be able to successfully navigate system folders and run files like regedit.exe and System32/Restore/rstrui.ex
e (a personal favourite) to fix things up. This is always a good step to take before resorting to the dreaded (and often un-locatable) Windows XP boot CD.
- How to manually remove programs
- How to change or remove a program in Windows XP
- Backing up and Modifying the Registry
To try and solve your problems without getting your hands dirty:
- Windows Installer CleanUp Utility
Since "Murphy's Law" is always in effect, there's one more thing you'll need: