In: Categories » Computers and technology » Windows registry » Some users of Windows know exactly what the registry is
Some users of Windows know exactly what the registry is a system designed to cause users and administrators to lose their hair. I know this is true because I can no longer feel the wind ruffling through my hair. Oh, I feel the wind; I just don't feel the hair. The registry is a simple, hierarchical database of information that Windows operating systems (and some applications) use to define the configuration of the system. Originally, in the early, simple days of Windows (16-bit Windows versions especially), the same information that is now stored in the registry was stored in text files. Though these text files were simple, their organization made access to the information they contained too slow to keep up with increasingly speedy technology. Many applications use the registry the same way, though some applications are now moving to separate storage locations for their data a technique that allows the applications to easily back up and restore their configuration data.
The Registry: Past and Present
The development of the registry, like Windows, has been evolutionary. The registry was preceded by a pair of flat-text files, called win.ini and system.ini. While the performance with these files left something to be desired, they formed the basis for today's registry. In fact, these two files live on today in Windows XP, though they are virtually unchanged from Windows NT version 4. The first registry to appear in Windows was created to solve a number of problems: poor performance (retrieving information from the original flat-text .ini files was cumbersome), size limitations (the .ini files could be only so large), and maintenance problems (the .ini files were organizationally impaired!). Today, the Windows XP system .ini files contain only a few entries used by a few applications. (Most are legacy 16-bit applications, though a few new programs are also placing some items in the win.ini file, too!)
These system .ini files are of no importance to us, and we may safely ignore them. For Windows XP, it's the registry that is most important to the system, because it contains the heart and soul of Windows XP. Without the registry, Windows XP would be nothing more than a collection of programs, unable to perform even the basic tasks that we expect from an operating system. Every bit of configuration information that Windows XP has is crammed into the registry. Information about the system's hardware, preferences, security, and users everything that can be set is set in there. However, times are a-changing. Microsoft now realizes that if every application stores application-specific information in the system registry, then the system registry can grow to an enormous size. That isn't quite what Microsoft had in mind when they created the registry structure. Microsoft's policy now states that applications may (and should) use standalone .ini files as needed. Some advantages to using application-specific .ini files include these:
• Individual applications sometimes need to be restored from backup. With an application-specific .ini file, it is not necessary to back up and restore the entire registry to reinstall any single application. (This eliminates the attendant problem of restoring one part of the registry only to lose another part during the restoration!)
• The system registry has a practical limited size. Granted, the size is large, but some applications have lately been adding substantial content to the registry without regard to the fact (sad as it is) that the registry is a shared resource that everyone, including the system, must use! Once the registry gets too large, some registry operations may take an excessive amount of time. Note Microsoft limits the size of any object that is stored in a registry data key to 1MB. This limit is basically only meaningful for REG_BINARY objects, because strings and such are unlikely to become this large. If you must store more than 1MB in a registry object, then store the information in a file and store a pointer to the file in the registry. Without this limitation, the registry could easily grow to be the largest file on your system.
For Windows before Windows XP
Windows 2000 and earlier versions set restrictions on registry size. If you approach your registry limit, you'll get a message stating that you are low on registry quota. This indicates that the registry has grown too large for the current size allocation. Unless you change it, the registry size is set to 25 percent of the paged pool size; for most computers, the paged pool size is approximately equal to the amount of installed RAM, up to a maximum of 192MB. The registry can be set to 80 percent of the paged pool size (80 percent of 192MB is just under 154MB, though good sense says to round down to 150MB). Earlier versions of Windows adjust the registry size based on the currently installed RAM. Several registry entries affect registry size, though most users will find that the defaults are acceptable for their use. To create a very large registry, ensure that the amount of RAM installed is sufficient and set the RegistrySizeLimit and PagedPoolSize entries.
Organization
The registry is organized into five major sections. These sections are called hives, which are analogous to root directories on your hard drive. Each hive, by definition, has its own storage location (a file) and log file. If necessary, a given hive can be restored without affecting the other hives in the registry. Inside a hive you find both keys (and subkeys, analogous to directories and subdirectories on your hard disk) and values. The term value (or data value, as it is sometimes called) refers to the information, or data, assigned to a key, making the key analogous to a file on your hard drive as well. A key or subkey may have zero, one, or more value entries, a default value, and from zero to many subkeys. Each value entry has a name, data type, and a value:
• The entry's name is stored as a Unicode character string.
• The entry's type is stored as an integer index. The type is returned to the querying application, which must then map this type to the type that the application knows.
• The entry's value is stored as necessary to allow efficient retrieval of the data when needed.
Both the Windows XP operating system and applications store data in the Windows XP registry. This is both good and bad. It is good because the registry makes an efficient, common storage location. Here's the bad part: as I mentioned earlier, as more and more applications and systems store information in the registry, it grows larger, and larger, and larger. It is most unusual for the registry to get smaller I'm unaware of any application that does a really complete job of cleaning up all of its own registry entries when the application is uninstalled. Many applications leave tons of stuff in the registry when they are uninstalled, and not many applications clean up unused entries as a routine process. The end result is that the registry will grow, like Jack's magic beanstalk, as time goes on. Note From time to time in this tutorial I'll refer to hives, keys, subkeys, and values using the generic term object. When the term object is used, assume that the item could be any valid item in the registry!
Hives and Their Aliases
There are five main, or top level, hives in the Windows XP registry, and accepted abbreviations _for each:
• HKEY_CLASSES_ROOT, a.k.a. HKCR
• HKEY_CURRENT_USER, a.k.a. HKCU
• HKEY_LOCAL_MACHINE, a.k.a. HKLM
• HKEY_USERS, a.k.a. HKU
• HKEY_CURRENT_CONFIG, a.k.a. HKCC
Note The Windows 98 and Windows Me (Millennium Edition) HKEY_DYN_DATA hive, which has no abbreviation, does not exist in Windows XP, though Microsoft had originally intended to include information about Plug and Play in this hive. So where is PnP data saved if the HKEY_DYN_DATA hive is gone? Windows XP supports PnP, and Microsoft decided to integrate PnP data with the main registry rather than use a separate hive. Each hive begins with HKEY_. HKEY is an abbreviation for "hive key," though the significance of this is not terribly important in understanding the registry. The H also signifies that the name is a "handle" for a program to interface with the registry. These handles are defined in the file winreg.h, included with the Windows XP SDK (Software Development Kit). The registry contains duplication sort of. For example, you'll notice that everything in HKEY_CURRENT_USER is also contained in the hive HKEY_USERS. But these aren't two different sets of the same information; rather, they're two names for the same set of information. Microsoft needed to make some parts of the registry appear to be in two places at one time. But they didn't want to copy these sections, because that could have created problems with keeping each of the two sections updated. Instead, they created an alias, or another name, for some registry components. The alias points to the original component and is updated whenever the original is. These aliases are created solely by Windows. You, as a user, can't create an alias in the registry no matter how hard you try! The most common alias is the registry hive HKEY_CURRENT_USER. It is an alias to either the .DEFAULT user or the current user in HKEY_USERS. If you take a quick peek at HKEY_USERS, you will see several keys there: one is .DEFAULT, and the others are named with long strings of characters. These are SIDs (security identifiers), which Windows XP uses to identify users. One of these subkeys for the currently logged-on user consists of just the SID, while the other consists of the SID suffixed with _Classes. For example, on one Windows XP server, the administrator has the two subkeys HKEY__USERS\S-1-5-21- 1004336348-842925246-1592369235-500 and HKEY_USERS\S-1-5-21-1004336348- 842925246-1592369235-500_Classes. I'll clear up what a SID is and how it is used in tutorial 17. Note The default user, used when no user is logged on, has only one subkey, named .DEFAULT. (How do you edit the registry when no one is logged on? Simply by using remote registry editing, with a different computer.) There are also other aliases in the registry. For example, the registry key HKEY_LOCAL_MACHINE\_System\CurrentControlSet is an alias to one of the other control sets ControlSet001, ControlSet002, or sometimes ControlSet003. Again, this is that same magic; only one registry object is there, it just has two names. Remember, in modifying a specific registry key or subkey; don't be surprised when another registry key or subkey seems to magically change also!
legal notice
Our website is not responsible for the information contained by this article. Web-articles is a free articles resource.
Suggestion: If you need fresh, daily updated content for your website, feel free to use our service. Click here for more information.
Useful tools and features
related articles
The Recovery Console The Windows XP Recovery Console is a tool that allows recovery from a number of failures. Previously, all you could do was boot another copy of Windows XP and hack your way around, replacing files, even registry components, in the blind hope that you would somehow fix the problem. With Windows XP, you have two tools to use: the Recovery Console and the Safe Mode feature. The Recovery Console is a powerful, simple (no, that's not an oxymoron!) feature that is supplied with Windows XP, but it i...
2. What the registry is and the terminology used for its various components
Anatomy of the Registry–The Blood, Gore, and Guts Overview In tutorial 1, we talked a little about what the registry is and the terminology used for its various components. In tutorial 2, we covered backing up and restoring the registry. In this tutorial, we will get into more of the details of what actually is in the registry. If you're only interested in how to use (or recover) the registry, but not what the registry is, it's possible to skip this tutorial. However, if you're unsure about this,...
3. The current control set is copied into the Last Known Good control set
When Is the Current Control Set the Last Known Good Control Set? At some point in the boot process, the current control set is copied into the Last Known Good control set. In Windows XP, the process of replacing the Last Known Good control set is done after the initial logon is performed. This allows the system to catch any problems related to the logon process. HKEY_USERS: Settings for Users Let's take a closer look at SIDs. No, despite what you may think, SID is not the kid down the street;...
4. Windows XP uses only one registry editor
Registry Tools and Tips–Getting the Work Done Overview Windows XP uses only one registry editor. Gone are the separate RegEdit and RegEdt32 editors that existed in Windows 2000. No matter which command you enter in Windows XP, RegEdt32 or RegEdit, the same program (RegEdit, which is called the Registry Editor) will run. Windows XP also has a utility called REG that is included as part of the system installation no more needing to install a separate Resource Kit. This tool is run at the comman...
5. The Registry Editor allows you to quickly create
Creating, Renaming, and Deleting Entries The Registry Editor allows you to quickly create, delete, or rename an entry. Entries may consist of keys, subkeys, or value entries. Creating a New Key You can quickly create a new key by following these steps: 1. Select the hive or key in which the new key is to be created. Either right-click the object or select Edit → New, and then select the type of object to create. 2. The Registry Editor creates the new subkey, giving it a default name of N...
6. The Registry Editor may be used from the command line
Using the Registry Editor from the Command Line The Registry Editor may be used from the command line, without user interaction. The commands that the Registry Editor uses include those described below. (Note that not all commands may be available under all operating systems.) • To import a registry file into the Registry Editor: REGEDIT [/L:system] [/R:user] filename1 • To create a registry object from a file: REGEDIT [/L:system] [/R:user] /C filename2...
7. Several tips come to mind when using the Registry Editor
Tips for Registry Editor Users Several tips come to mind when using the Registry Editor: • First, when saving a hive using Save Key (under the Registry menu), make absolutely sure that the filename saved to is descriptive enough to enable the successful restoration of the hive at a later time. The Registry Editor doesn't check whether a hive being restored is the same hive as the one being replaced. • Second, as with the Registry Editor, be aware that printing can create reports of incredible s...
8. The export function invoked with the command reg export
Export The export function, invoked with the command reg export, exports the registry object specified to a disk file. The object may be a single-level key, such as HKLM\TEMP. Parameters include the name of the key to export and the name (qualified as necessary) of the file to export to. Export is only allowed on the local machine. The command line for export is: REG EXPORT keyname filename As with other registry tools, the registry path to be queried may be a ROOTKEY or a hive, ...
9. Installing Remote Registry Editing on Windows 95
Installing Remote Registry Editing on Windows 95, Windows 98, and Windows Me Note This section addresses the concerns of system administrators working in mixednetworking environments. Though Windows NT Workstation and Windows 2000 Professional have remote registry editing installed already, Windows 95, 98, and Me do not. The installation process is similar on both operating systems, though the source of the necessary drivers differs with each version. You have to install a network service to enable remote regis...
