The Windows Registry

There are a number of places in Windows where Microsoft has solved an existing problem by overcorrecting, and causing other problems well down the road. One of the places this is currently most obvious in Vista is the way you are bombarded by a flurry of “allow/decline” messages every time you do anything that modifies the system. They had to do something about stuff getting installed behind your back, and opted for irritating overkill.

Another place is the registry.

The registry exists for a very good reason. Wayyyy back in the dark days of Windows 3 and DOS, getting your computer configured, adding hardware, and telling your machine where all of the programs were required editing a series of files scattered throughout the hard drive. Programs would place these configuration files in seemingly random locations, and many installation programs for new hardware or software would misread or worse, break the configuration files.

The benefits gained were many. System files were collected into one location where drivers and add-ons could easily find them. The same was true for program preferences. It provided a fast and consistent means of storing this information. Access to most of these settings was through control panels unless you jumped through hoops to manually edit them, reducing the number of potential errors. On top of that it’s structure as used in Windows 2000 and XP allowed corporate computer policies and settings to be configured and enforced centrally. All this was achieved without having to worry about file permissions. There’s even a degree of built-in backup, and many errors could be recovered using the last known good state.

That said, I’ve all too many times run into serious issues when the registry gets messed up. This could be the user settings loaded with your profile when you log in, or worse, the machine settings. How software installation, uninstallation, and reinstallation is handled also is much more difficult than it should be. Finally, it accumulates cruft over time.

Let’s tackle the last, first. Any system of settings can leave behind bits and pieces. Personal program preferences are the worst. Even on a Mac, deleting a program does not get rid of the preference files that store all of your settings. That said, these preferences aren’t read and loaded until their respective program loads, so all they do is tie up space on your hard drive, and have little or no impact. In Windows, if the uninstaller either deliberately leaves the preferences, or forgets them, they are now part of the ‘hive’, are loaded when the computer starts or when you log in, and are yet another point for the registry to become corrupted and fail, even if they are not being used. Besides, tying up this room in memory means longer load times and more memory used up that can be used to run programs, etc.

Remember — all things being equal, something more complex is more likely to break. That’s why we engineers value simplicity in design, and “Rube Goldberg” is something of an insult.

Programs entering themselves into the registry is also a reason for a common complaint among Windows users that Mac users find criminal – program portability. If you have to reinstall Windows in anything other than “repair” mode (and sometimes even then) you are virtually guaranteed to spend hours, if not days, reinstalling every piece of software on the computer. If you decide you will be using a certain program on your shiney new desktop, you can’t simply copy the program file over. By contrast, about the only programs on a Mac requiring full reinstallation are drivers and the Adobe suite. Everything else can run from any directory, and if it doesn’t find a set of preferences, creates a default. Many programs are installed by simply copying them to your hard drive and they can be moved or copied by simply dragging the programs to their new home. At worst you may have to copy the license file out of the system preferences as well, or re-key the license. You don’t even have to put them in the “Applications” folder — the equivalent of “Program Files” in Windows. Getting rid of those same programs is as easy as dragging them to the trash. This is possible because there is not a central registry that tracks locations of program files which breaks if you manually move the file, and because Mac programs are smart enough to create a default set of preferences.

What’s worse is when your registry gets corrupted. This can be corruption of the actual data, or corruption of the structure. Both can result in programs crashing, failing to start up, or worse, the computer never starting at all.

If the data is corrupt, then sometimes it can be manually tracked down and corrected. Usually this is easiest by removing and reinstalling the program, unless of course the uninstaller forgets to remove the relevant registry keys. If the structure is corrupt, it’s a nightmare. You cannot even access, much less delete, the relevant keys to fix the problem. At this point, getting the problem fixed becomes “interesting” in a chinese-curse way, and unless you have on tap very recent backups of the registry that are also clean, you will likely have to reinstall (in the case of system registry problems) or wipe the user account (user registry settings). Few things are more frustrating than trying to get a clean and functional user profile working in a roaming-profile environment.

In short, the registry had solved a number of problems, but has also brought a number of headaches along that just get worse and worse as a computer ages and more programs get added and removed. This is why many Windows experts would recommend a reinstall every year or two, and many tech support lines commonly ask you to reinstall Windows when troubleshooting a problem.