In the past two days I’ve been asked by several students and one friend about my thoughts on registry cleaning software. Since the subject keeps coming up in a short period of time, I thought I needed to comment on it.
I’m speaking about the free and/or paid for software that is supposed to clean out your computer (Windows) registry. The claims are that if your registry is junked up by outdated or unneeded entries, errors, and a host of other dreaded registry diseases, these registry cleaners will put your registry back to like new condition and your PC will never crash again! We could only hope!
Before we get into whether the subject at all about the software, let’s make sure you understand what a registry really is. Please note: The emphasis in the article is mine.
Description of the registry
The Microsoft Computer Dictionary, Fifth Edition, defines the registry as:
A central hierarchical database used in Microsoft Windows 98, Windows CE, Windows NT, and Windows 2000 used to store information that is necessary to configure the system for one or more users, applications and hardware devices.
The Registry contains information that Windows continually references during operation, such as profiles for each user, the applications installed on the computer and the types of documents that each can create, property sheet settings for folders and application icons, what hardware exists on the system, and the ports that are being used.
The Registry replaces most of the text-based .ini files that are used in Windows 3.x and MS-DOS configuration files, such as the Autoexec.bat and Config.sys. Although the Registry is common to several Windows operating systems, there are some differences among them.
A registry hive is a group of keys, subkeys, and values in the registry that has a set of supporting files that contain backups of its data. The supporting files for all hives except HKEY_CURRENT_USER are in the %SystemRoot%System32Config folder on Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, and Windows Vista. The supporting files for HKEY_CURRENT_USER are in the %SystemRoot%ProfilesUsername folder. The file name extensions of the files in these folders indicate the type of data that they contain. Also, the lack of an extension may sometimes indicate the type of data that they contain.
Okay, now we’re all on the same blog page, right?
What’s that? You don’t understand half of that? You do know what a hierarchal database is, right? Well, then surely you got the hives and keys down as well, right? No?
Okay, maybe this definition may help (again, the emphasis is mine!):
The registry is a system-defined database in which applications and system components store and retrieve configuration data. The data stored in the registry varies according to the version of Microsoft Windows. Applications use the registry API to retrieve, modify, or delete registry data.
You should not edit registry data that does not belong to your application unless it is absolutely necessary. If there is an error in the registry, your system may not function properly. If this happens, you can restore the registry to the state it was in when you last started the computer successfully. For more information, see the help for your operating system.
Okay, do you understand the registry now? Not much better, huh?
Isn’t that interesting! Microsoft, the manufacturer of the operating system that creates the registry says not to fool around in there. And why do they say that? Because if you screw up the registry, your system won’t work. But I guess your registry cleaning software manufacturer knows better then the maker of the software, right? I mean, after all, Microsoft’s been wrong before.
Okay, now I know you have to understand all the registry values, right?
|REG_BINARY||Binary data in any form.|
|REG_DWORD||A 32-bit number.|
|REG_DWORD_LITTLE_ENDIAN||A 32-bit number in little-endian format.
Windows is designed to run on little-endian computer architectures. Therefore, this value is defined as REG_DWORD in the Windows header files.
|REG_DWORD_BIG_ENDIAN||A 32-bit number in big-endian format.
Some UNIX systems support big-endian architectures.
|REG_EXPAND_SZ||A null-terminated string that contains unexpanded references to environment variables (for example, “%PATH%”). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.|
|REG_LINK||A null-terminated Unicode string that contains the target path of a symbolic link that was created by calling the RegCreateKeyEx function with REG_OPTION_CREATE_LINK.|
|REG_MULTI_SZ||A sequence of null-terminated strings, terminated by an empty string ( ).
The following is an example: