23

Expanding on How do I remove residual traces of uninstalled software from the registry? -- every time I uninstall a program and then later look it up via RegEdit it's still there!

Why are the majority of Windows apps so intent on leaving tiny little traces of themselves in the registry? Is it Windows' fault or the developers?

1
  • 3
    A large group of those kind of programs belong to trial programs that have a time limit and after that you have to buy them. if they didn't leave any trace on Windows, after the trial period has ended you could simply uninstall and reinstall the software and reset the trial period. It's really up to developers to decid how their programs should act on uninstall. there are programs and driver software that uninstall completely and remove everything they add on installation.
    – user326006
    May 24, 2015 at 20:02

3 Answers 3

31

Because it is impossible.

The registry has multiple root nodes, but only two interesting ones: LocalMachine and CurrentUser. Normally, the setup writes values into LocalMachine, and the running program ONLY writes into CurrentUser (actually, unless the setup messes with the permissions, the running program can't write into LocalMachine.)

While keeping leftovers in LocalMachine is laziness, as pointed out by the other answers, it is not possible to clean the User part.

If a program is installed per machine (which most are) and multiple users use it, what should the uninstaller do? It could safely remove the user settings of the current account, but the current account might not be your account. (This happens if you started the uninstaller from a non admin account and then entered the credentials of an admin account - the setup is now running under that account, not the first one).

What about the other users? It could try to enumerate all users, but their registry keys might not be loaded. (Windows is lazy and only loads the things it needs.)

But you shouldn't even try that one. If you use roaming profiles, for example for terminal services, and then delete all settings on uninstall, you could really mess up and delete stuff that is actually still in use.

A terminal server is basically one windows machine where multiple users log-in at the same time and use applications.

Say you have two terminal servers running one application. You uninstall the application on TS1, now all the settings for all users are gone on TS2 because you have roaming profiles. oops.

The same also applies to files in the per-user directories.

In the setup of my companies program, I delete the per-machine stuff but don't touch the per-user stuff, not even of the user currently running the setup.

1
  • Also, don't forget that uninstalling does not necessarily mean getting rid of an app completely: sometimes you uninstall version 1 of an app, then install version 2 of the same app - you do not want to lose all your settings in that case.
    – Stefan
    May 28, 2015 at 21:19
19

There are many reasons this is the case, however it is not the fault of Microsoft or the Windows operating systems.

The following is a list of some the cases and reasons behind leaving registry entries:

  • Bad programming - The developer did not write the application uninstaller properly and the registry entries are left behind. In addition to that, the uninstaller might not have/use the proper permissions to remove the registry entries. It could also be that there is more than one application that uses those keys. For instances, two applications from the same developer, that writes to the same keys.

  • Left on purpose - As one comment mentioned, these entries could have been left on purpose. Some applications have a trial period and after that period you might choose to remove the application. If you choose to reinstall the application later, those keys give the application information on when it was installed. In addition to that, some developers might choose to leave those keys in case you choose to reinstall the application. If the developer used registry keys to store your customizations, they might leave them there, so when you reinstall all of your customizations persist. In the grand scheme, registry keys just take up a few bytes.

Should you remove the keys? That depends. The Windows registry is a dangerous place to mess around in. You can inadvertently break your system. Leaving the extraneous keys will not hurt the system. Some people will say cleaning/defragging the registry will speed up your system, but that has been proven false repeatedly.

If you really want to get rid of those programs, there are some uninstaller tools that can remove every trace of a program. These programs will watch the installer of another program and record all the actions done to the file system and registry and then completely remove those actions. One issue with these tools is that it is possible that they can remove things you might want to keep.

6
  • Despite being "a few bytes" those bytes add up. It can cause the registry to become slower as more and more unused entries build up. Probably not relevant for a "typical" user, but heavy users will have a bigger problem. This is why it was typical to recommend refreshing/reinstalling Windows every 6-12 months to keep the system "healthy." Programs like CCleaner can keep the system faster longer, by cleaning up the left over pieces from apps.
    – phyrfox
    May 24, 2015 at 23:37
  • 3
    @phyrfox as stated in my answer, registry cleaners are snake oil. they dont help at all.
    – Keltari
    May 24, 2015 at 23:59
  • 1
    In Win9x days, registry size did matter and lots of stale keys slowed down OS. But that was long ago and NT's regustry is different beast. Although, it to sometimes need fixing: How to Compress "Bloated" Registry Hives May 25, 2015 at 1:22
  • 10
    @phyrfox: "Programs like CCleaner can keep the system faster longer" - No they don't. "This is why it was typical to recommend refreshing/reinstalling Windows every 6-12 months to keep the system "healthy."" - Typical because people don't know how to take care of their systems. I'm sitting here typing on a 5 year old installation that has seen heavy use and there has been no appreciable slowdown. It's recommendations like these that keep companies peddling snake oil in business.
    – Karan
    May 25, 2015 at 4:20
  • 1
    Yeah, registry is actually pretty fast (and the commonly used hives and keys are usually kept in memory). Even in the olden days, the biggest issue with "bloated" registry was with things like shell extensions and HKCR - they came right back as soon as you reinstalled the software that provided them. It's been quite a long time since I've reinstalled the OS for "performance" reasons the last time (still on Windows XP, never on 7).
    – Luaan
    May 25, 2015 at 7:43
0

To get rid of the left over registry,try using IOBIT uninstaller.It is by far the best uninstaller out there.Besides it;s free..I use it all the time..It has a powerful uninstall feature that goes right to where the left over registry key is,click the check mark box when prompted and registry keys deleted. Iobit comes with other programs,just use the uninstaller to get rid of them

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .