Subscribe to Windows IT Pro

 

Get Newsletters

  • Get the Latest News
  • Product Updates
  • Helpful Tricks
  • Productivity Tips

Subscribe Now!

August 29, 2006 12:00 AM

Registry Junk: A Windows Fact of Life

Windows IT Pro
InstantDoc ID #92764
Rating: (1)

Registry cleaners have always been popular, but I never paid much attention to them. I originally thought that there might be valid reasons for their existence, but over time I changed my mind. But recently I've come to recognize that even today they can help maintain registry hygiene.

It used to be common for developers to write their own application installation routines to avoid paying hundreds of dollars for commercial setup toolkits. Their focus in coding installers was the installation part of setup because coding uninstallers is in some sense an admission that the software you've developed might not be useful or robust enough to become a permanent fixture on end-user systems. As a result, software uninstalls were often incomplete, leaving behind registry and file system detritus. A few hundred kilobytes of unused keys and values causes no noticeable performance impact on system operation, but I figured it was natural for a registry cleaner to be an essential part of running a tight ship for the anal-retentive systems administrator.

Installer technology has come a long way and today there are dozens of reliable freeware and low-cost installation toolkits available both for old-style and Windows Installer Package (.msi)-based setup. I previously believed that meant the end of registry scrap and any reason for the existence of registry cleaners. However, one of the Regmon troubleshooting examples Dave Solomon and I present in our Windows Internals seminars made me realize that it's common for even best-of-breed uninstallers that have earned the Windows logo from Microsoft to leave our registries littered with traces of applications deleted long ago.

The troubleshooting example that triggered my realization is one in which a user discovered that Microsoft Internet Explorer (IE) would hang on startup unless he'd used his ISP's dialer to establish an Internet connection before opening IE. The user captured a Regmon trace of the hang and found references to his previous ISP's dialer in the RAS Phonebook key under the HKEY_ CURRENT_USER area of the registry. After deleting the stale values, the new ISP's dialer began launching like it was supposed to when IE opened.

Some research on my part suggests that the user had manually configured a RAS phonebook entry, and when he changed ISPs had forgotten to update the entry. But the fact that the problematic key in the example was in the per-user part of the registry got me thinking. If the user's old dialer had created the phonebook entry automatically, then been uninstalled from a different account, the user would've been left with a broken IE configuration. That's because uninstallers typically delete their application's systemwide settings from the HKEY_LOCAL_MACHINE part of the registry and any per-user settings of the user running the uninstaller from HKEY_CURRENT_USER. But what happens to the per-user settings of the other users that used the application? You guessed it: Registry junk gets created, and perhaps also file system junk in the application's Application Data folder in the \Documents and Settings directories of other users. An uninstall is thorough only if the user performing it is the only one that used the software.

Uninstallers that want to be as meticulous as possible could use the LoadUserProfile Windows API to load each profile stored on the system, as listed in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current-Version\ProfileList, and look for their application settings in other profiles. The problem with that approach is that registry permissions would likely prevent a user from deleting keys in other users' profiles. Even if permissions aren't an issue, domain users with roaming profiles carry application settings with them to other computers, so profiles that need to be updated might not be locally accessible.

So it appears that registry junk is a Windows fact of life and that registry cleaners will continue to have a place in the meticulous system administrator's tool chest, at least until we're all running Microsoft .NET applications that store their per-user settings in XML files . . . and then, of course, we'll need XML cleaners.
—Mark Russinovich

Related Content:

ARTICLE TOOLS

Comments
    There are no comments to display. Be the first one!
You must log on before posting a comment.

Are you a new visitor? Register Here

advertisement

advertisement

White Papers

Get your Windows 7 deployment off to the right start by implementing PC lockdown. A locked-down environment is easier and cheaper to support since users are less likely to make unnecessary changes to the core system configuration - read more here!

Essential Guides

Is your iSCSI "lossy"? The reality is that most off-the-shelf Ethernet hardware deployed for iSCSI can lose packets, resulting in slow performance or application downtime. Learn how to assess your current iSCSI infrastructure and engineer an advanced iSCSI SAN infrastructure.

Web Seminars

What's the best way to keep your network safe from malware? In this web seminar, security expert Greg Shields suggests an alternative method to the traditional blacklisting approach that is common with anti-virus and anti-malware solutions.

eLearning Series

We bring the experts direct to you to share their real-world perspective and expertise. During each event, three sessions stream in real time, so you can learn, ask questions, and get solutions.
Upcoming event: Getting the Most with Exchange 2010 with Paul Robichaux

Subscribe to Windows IT Pro!

Windows is a trademark of the Microsoft group of companies. Windows IT Pro is used by Penton Media Inc. under license from owner.