Chapter 32. The Registry

What Is the Registry?

The Windows XP Registry is a database in which Windows and application programs store startup information, hardware settings, user preferences, file locations, license and registration information, last-viewed file lists, and so on. In addition, the Registry stores the associations between file types and the applications that use them. For example, the Registry holds the information that tells Windows to use Media Player when you click on an MPG movie file. In the early days of DOS and Windows, programs stored this kind of information in a random collection of hundreds of files scattered all over your hard disk. (Remember CONFIG.SYS?) Thankfully, those days are now only a dim memory.

Most of the time, you can get by without giving the Registry a second thought, because almost every useful Registry entry is set from a Control Panel applet, an application's preferences dialog, or Windows Setup. From time to time, though, you might have to roll up your sleeves to find the location of an errant device driver, you might need to remove an unwanted startup program, or you might just be curious what kind of information Microsoft Office keeps on file about you. This chapter tells you how to go on these kinds of missions.

How the Registry Is Organized

The Registry leaves the plain text files of AUTOEXEC.BAT and WIN.INI far, far behind. It is a specialized database organized a lot like the files and folders on a hard disk. In fact, the Registry Editor navigates through the Registry using the same expandable list display that Windows Explorer uses to display a disk.

Just as a hard disk contains partitions, the Registry contains separate sections called hives. (The reason Microsoft chose the word hive is unclear. It had something to do with busy bees, but more than that, the folks there won't say.) In each hive is a list of named keys that correspond to the folders on a hard disk. Just as a file folder can contain files and yet more folders, a Registry key can contain values, which hold information such as numbers or text strings, and yet more keys. Even the naming of file folders and keys are similar: A folder might be named Documents and Settingsrianchapter32, and a Registry key might be named HKEY_CURRENT_USERSoftwareMicrosoft. Let's look at the Registry starting with its top-level keys.

The two main “top-level” keys are as follows:

  • HKEY_LOCAL_MACHINE contains all the hardware and machine-specific setup information for your computer. For example, it lists every device driver to load and all your hardware's interrupt settings. It also holds software setup information that is common to all users.

  • HKEY_USERS has a subkey for each user of the computer. Under each user's key, Windows stores user-specific information, such as color preferences, sounds, and the location of email files.

The Registry Editor also presents three other sections that look like separate top-level keys:

  • HKEY_CURRENT_USER is the subsection of HKEY_USERS corresponding to the logged-on user. It holds preferences and software setup information specific to the current user, such the choice of screen saver and Office's default language.

  • HKEY_CURRENT_CONFIG, which is a shortcut to HKEY_LOCAL_MACHINESystemCurrentControlSetHardware ProfilesCurrent, contains the hardware settings specific to the hardware profile chosen when Windows was started.

  • HKEY_CLASSES_ROOT is a strange beast. This Registry section stores file associations, linking file types to applications. It's a combined view of two other Registry sections: HKEY_LOCAL_MACHINESoftwareClasses, which holds settings for all users, with the addition of HKEY_CURRENT_USERSoftwareClasses, which holds any personal settings stored for the current user. If the same value is defined in both HKEY_CURRENT_USER… and HKEY_LOCAL_MACHINE, the HKEY_CURRENT_USER value is used.

In reality, these keys are views into subkeys of the first two, as illustrated in Figure 32.1.

The Registry is composed of two true top-level keys and three “virtual” top-level keys.

Figure 32.1. The Registry is composed of two true top-level keys and three “virtual” top-level keys.

These three “virtual” top-level keys are there for convenience—it's easier to look in HKEY_CURRENT_USER than to try to remember where to find user entries under the ugly numbered keys inside HKEY_USERS.

Within each of the top-level keys, there are several subkeys holding related information. HKEY_CURRENT_CONFIG, for example, contains two keys: Software and System. Software in turn contains two keys: Fonts and Microsoft. (By the way, with keys, just as with folders, you can spell out the full path—HKEY_CURRENT_CONFIGDisplaySettings—or just refer to Settings, if you know you're discussing HKEY_CURRENT_CONFIGDisplay).

All this might seem a little daunting, but remember that the purpose of the Registry keys is to organize setup information sensibly. Instead of having this information in many mysteriously named and randomly located files, it's all here, filed away in the Registry.

CAUTION

Another similarity between Registry keys and file folders is that both can have “access permissions” set to prevent unauthorized users from examining or modifying them. I won't go further into this topic, except to recommend that you don't attempt to set or modify the default permissions in the Registry. It's too easy to make a mistake that will prevent even Windows itself from having access to the information it needs. If you implement Group Policies, the Policy Editor will adjust Registry permissions as necessary.

The Registry database itself is stored in several separate files, called hives, which I mentioned earlier. HKEY_LOCAL_MACHINE is stored in the folder windowssystem32config, in several hive files: SAM, SECURITY, SOFTWARE, and SYSTEM. HKEY_USERS is stored with each user's subkey in a separate hive file. These are kept in each user's profile folder (Documents and Settingsusername) as a file named NTUSER.DAT, except the “Default User” key, which is in windowssystem32configDEFAULT. Finally, each user has a list of keys used to add to or override HKEY_CLASSES_ROOT, which is stored in Documents and SettingsusernameLocal SettingsApplication DataMicrosoftWindowsUsrClass.dat. (If you're interested, you can see that even the information about which file supports which section is maintained in the Registry, under the key HKEY_LOCAL_MACHINESYSTEMControlSet001Controlhivelist. Just don't try to change these values!)

You generally can't examine or modify these files directly while Windows is running because Windows maintains exclusive control of them. Backup software uses special Windows program functions to get access to back up or restore them. The exception, though, is that the NTUSER.DAT files for users not currently logged in are not locked, so they can be copied and backed up as normal files.

Registry Contents

What's in the Registry, anyway? There's a lot to it; many entire books have been written about it. If you want a full-blown guide to the Windows XP Registry, you might look for Microsoft's Windows XP Resource Kit, or check your local bookstore for other weighty tomes. Short of that (way short) I can still do a quick overview of the Registry to give you some idea of its organization and contents.

You just learned about the five main sections of the Registry. Let's go through them one by one now, and hit on some of each section's highlights.

HKEY_LOCAL_MACHINE

As you might expect, HKEY_LOCAL_MACHINE contains information specific to your computer, settings that aren't user-specific. They include hardware settings and software information that is global for all users.

The main keys in HKEY_LOCAL_MACHINE are shown in Table 32.1.

Table 32.1. Main Keys in HKEY_LOCAL_MACHINE

HARDWARE

Contains information about the computer's hardware platform and Plug and Play devices, discovered afresh each time the system is booted. No configurable settings are located here.

SAM and SECURITY

Contain the Windows Security Account Manager databases. These keys always appear to be empty because only Windows itself is allowed to read or edit the information.

SOFTWARE

Contains system-wide software settings for applications and Windows itself. This key contains many subkeys. The Classes subkey is special and is given its own virtual view as HKEY_CLASSES_ROOT. The other entries are generally named after software manufacturers. I'll describe some of the more interesting keys in a moment.

SYSTEM

Contains a series of numbered ControlSet entries, each of which contains the settings for hardware and system services. One of them is chosen as the CurrentControlSet subkey. As you install or remove hardware, Windows rotates through the ControlSet entries, using one as the “current control set.” This way, it can keep previous versions to use as a backup.

The fun bits are in the SOFTWARE keys under HKEY_LOCAL_MACHINE. Under SOFTWARE is the special Classes subkey, which I'll describe in the HKEY_CLASSES_ROOT section of this chapter. Also, there are subkeys named after software manufacturers that contain systemwide settings for these companies' various programs.

Under Microsoft, naturally, is a slew of subkeys for the software systems provided with Windows and for any add-ons you've purchased, such as Office. You'll have more than 100 subkeys in HKEY_LOCAL_MACHINESoftwareMicrosoft just after installation and more when you start adding your own software.

Most of the juicy settings that control Windows itself are found in HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion.

I'll discuss just one of these juicy keys. When you log in to your computer, you know that Windows can start up some programs automatically. You can actually set a program to be started up at login in any of five ways:

  • A shortcut in the Startup folder of your Start menu (in Documents and SettingsyourloginnameStart MenuProgramsStartup)

  • A shortcut in Documents and SettingsAll UsersStart MenuProgramsStartup

  • A key named Run, RunOnce, or RunOnceEx in HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion

  • A key named Run, RunOnce, or RunOnceEx in HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion

  • A run= or load= entry in WIN.INI in the Windows directory (usually windows or winnt. Yes, WIN.INI is still around from the Windows 3.1 days, because some older programs count on it being there.)

NOTE

To maintain compatibility with older 16-bit Windows software (and even some new software that should know better), the original Windows SYSTEM.INI and WIN.INI files still exist, and Windows XP keeps a few of their entries up-to-date with information copied from the Registry. This lets older software that really depends on the old INI file system still function. It's too bad that this old stuff is still around, but compatibility has turned out to be more important than neatness.

The Run keys are often set by software manufacturers who want their software to run automatically when you log on. Sometimes this is a good thing—as when Windows uses it to start the taskbar program. But this technique is sometimes used to install annoying programs you really don't want to run. If the programs don't have configuration or preference settings that will disable the run-on-logon behavior, you can delete their value entries under these keys.

The RunOnce and RunOnceEx keys are used mostly by installation programs that need to complete their work after you restart your computer. Windows normally deletes these entries after you've logged in once and these programs have run, but they are sometimes not properly removed.

Note

NOTE

HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG is a virtual top-level key containing information Windows uses to initialize during its bootup phase, and very little else. Despite its important-sounding name, you'll find virtually nothing of interest to humans in here. The information is all set up automatically when you create Hardware Profiles.

By virtual, I mean that the keys in HKEY_CURRENT_CONFIG are really contained in other parts of the Registry, and using HKEY_CURRENT_CONFIG is just a convenient way to get at them. A curious feature of this one is that its subkeys come from several different parts of the Registry. Its SystemCurrentControlSet subkey comes from one of the HKEY_LOCAL_MACHINESYSTEMControlSet### keys, and various parts of its Software subkey come from other parts of HKEY_LOCAL_MACHINE. The Registry presents the information from these various keys again under HKEY_CURRENT_CONFIG as a matter of convenience.

HKEY_CLASSES_ROOT

HKEY_CLASSES_ROOT is another of these virtual keys, provided to give programmers quick access to information from other places in the Registry. What you see under HKEY_CLASSES_ROOT are the contents of HKEY_LOCAL_MACHINESoftwareClasses, plus any additional user-specific settings stored under HKEY_CURRENT_USERSoftwareClasses, whose entries add to or override the HKEY_LOCAL_MACHINE entries.

A large part of the Classes section is devoted to the associations the Explorer makes between file types (or filename extensions, like .doc) and the programs that are used to open, display, or edit them. This is the information you're editing when you change associations in the Explorer by choosing Tools, Folder Options, File Types, as discussed in Chapter 21.

These entries contain the nitty-gritty linkage information that Windows uses to locate software components based on ActiveX Controls, OLE, and the COM+ interprocess communication system. These entries are confusing, complex, and best left completely alone.

Table 32.2 gives an overview of the structure of HKEY_CLASSES_ROOT.

Table 32.2. The Structure of HKEY_CLASSES_ROOT

Entry

Description

*.* through .zip

For each listed file extension, the default value assigns a name to the file type. Each of these file type names appears later as a subkey of its own. File types that have OLE handlers have a subkey PersistentHandler, which gives a Class ID (a string of numbers like { 098f2570-b…-03f3} ). They are listed under the CLSID subkey, where the program file for the handler is named.

Files that have associated programs to edit or display them may also have shell or shellx subkeys, which contain the commands Explorer uses when you attempt to open a file using a double-click. This file type/application association can also be stored under a OpenWithList key, which I'll describe under “HKEY_CURRENT_USER.”

filetype

Each named file type (for example, VBScript) contains the CLSID number of the associated handler for the file type. Windows looks up this information through the CLSID subkey to find the associated program. Filetype name keys may also have shell or shellx subkeys, listing the commands used to open, edit, or print this type of file.

CLSID

Contains a subkey for each registered Active-(something) handler; the subkeys and values name the handler and point to the file containing its program code.

HKEY_USERS

HKEY_USERS contains a subkey for each authorized user of the computer and an entry named .DEFAULT. The .DEFAULT section contains just that—the basic settings given to each new local user added to the computer. (I say local because, on a Windows 200x Server domain-based network, when a user logs in for the first time using a domain login name, his or her default Registry entries are obtained from the domain's server, not the local computer.)

The user subkeys of HKEY_USERS have long numeric names. These names are the GUID or Globally Unique User Identification numbers generated by Windows as a computer-friendly representation of the user's name. It's by these numbers that Windows tracks users, whether local or domain-based.

Nothing else is in HKEY_USERS besides these per-user subkeys. They appear as the contents of HKEY_CURRENT_USER and HKEY_CLASSES_ROOT when the associated user is logged in.

HKEY_CURRENT_USER

HKEY_CURRENT_USER contains settings, preferences, and other information specific to the currently logged-in user. This whole “section” is actually a subkey of HKEY_USERS, as discussed previously, but is provided this way as an easy way to get to the information.

The Software keys in HKEY_CURRENT_USER are similar to the Software subkeys in HKEY_LOCAL_MACHINE. They're grouped by software manufacturer, and Windows entries are stored in HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion.

Windows has several ways to associate filename extensions with applications. Besides the .xxx and filetype keys under HKEY_CLASSES_ROOT, Explorer also uses HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts. This registry key holds the application associations you see when you right-click a file and see the “Open With…” choices. Have you ever noticed that Windows remembers which application you last used to open a given file type?

Take a look under this key and you'll see subkeys of the form .xxx, listing many file extensions. Under these are subkeys named OpenWithList and/or OpenWithProgids. OpenWithList has values named with the letters a, b, c, and so on, each of which has as its value the path to an application program that could be used to open the file type. The value MRUList lists the letters of the applications in the order in which they were most recently used. This is why Explorer remembers which application to offer first in the list of possible choices.

Backing Up and Restoring the Registry

Because the Registry is now the one place where all the Windows hardware and software settings are stored, it's also the one thing that Windows absolutely needs to run. You will hear dire warnings from Microsoft, other computer books, installation manuals, and now me: It's very important to back up the Registry before you edit it. If a critical entry is lost or changed incorrectly (for example, one that holds the name of a driver file for your graphics display adapter), Windows may not be able to start at all.

Note

Backing Up and Restoring the Registry

Make it a habit to back up the Registry every time you back up your hard disk and before you install new hardware or software. I can tell you from personal experience that without a Registry backup, something as common as a bad graphics card installation program can cost you a whole day of trying to get your system to boot again! Windows XP Professional has some built-in protection to help avoid this type of disaster, but you should still take your own precautions.

Backing Up the Registry

You can back up the Registry in Windows XP in three main ways: You can back it up as part of a regular disk backup, you can use the Registry Editor to save a key to a disk file, or you can use a special-purpose Registry backup program.

I suggest that you set your favorite disk backup program to back up the Registry files every time you back up your hard disk. Before you install a piece of new hardware or a significant software package, do a full disk backup, including the Registry. Before you manually edit the Registry for other purposes, back up the Registry by any of the means I'll discuss in the next few sections.

TIP

An Automated System Recovery backup is a fourth Registry backup of sorts—it saves the most critical, hardware-related information from the Registry on the Emergency Repair Diskette (ERD), then puts everything in the larger backup set. An up-to-date ERD can help you get Windows back on its feet if you have a Registry or other disaster. If you really want to get a gold star for preparedness, update your ERD every time you've added new hardware, after it has proven to be stable and work correctly.

Note

→ To learn how to make an Emergency Repair Disk, seeBackup Tools and Strategies,” p. 1142.

Backing Up with Windows Backup

To run the Backup utility included with Windows XP Professional,

  1. Open the Start menu and choose All Programs, Accessories, System Tools, Backup.

  2. Click Advanced mode, and select the Backup tab.

  3. Check System State as shown in Figure 32.2. If you want to back up more than just the Registry, select any other drives and/or folders you wish to back up.

    Check System State to add the Registry to your backup set.

    Figure 32.2. Check System State to add the Registry to your backup set.

  4. Select a destination for the Registry backup. You can save to a tape drive, network drive, Zip disk, or to a file on your hard drive (you could enter “C: egback.bkf”). Select the desired backup destination (for example, “File”), and enter the desired location under Backup media or file name. Click Start Backup.

  5. Click Advanced and uncheck Automatically Back Up System Protected Files with the System State. (This will cut the backup from more than 1GB of data down to around 10MB.) Click OK.

  6. Check Replace the data on the media with this backup, and then click Start Backup.

The System State backup option backs up the Registry along with boot files, Active Directory files, and Certificates. For this reason, it is a good idea to select System State every time you make a backup, to disk or tape.

Now, with this backup on hand, if Registry problems occur after your installation, you can use the Backup utility again to restore the Registry to its previous state.

Although it's best to perform a full backup to tape, disk, or other high-capacity storage media, you can perform a quick System State backup to a local disk file in preparation for adding new hardware or software.

NOTE

With Backup, you cannot save the System State of a remote computer, only the local computer. For remote or centralized backup services—to back up the Registries of all the computers on your network—you need to buy a third-party backup program. If you're managing a large network of computers, you should definitely investigate centralized backup systems.

Backing Up with Third-Party Disk Backup Software

Third-party disk backup software made for Windows XP Professional will include an option to back up the Registry. Be sure to check this option whenever you are backing up your hard disk. It may have options like the Windows Backup program to back up just the Registry and to back up to a disk file, so you can make a quick backup before attempting Registry edits.

You should check your backup software's manual for instructions on saving Registry and system information when you back up. I suggest that you always include the Registry in your backups.

Backing Up with Third-Party Registry Backup Software

There are third-party programs specifically designed to back up and restore the Registry and other critical Windows files. For example, SuperWin's WinRescue XP program (www.superwin.com) can not only back up and restore the Registry, but can defragment the Registry's files and work magic to revive a non-bootable Windows system. If you're a Registry hacker, it would be worth buying a Registry backup tool.

These programs will come with their own extensive instructions on backing up, restoring, repairing, and maintaining the Registry.

Backing Up with Regedit

The Registry Editor, called Regedit, has a mechanism to export a set of Registry keys and values to a text file. If you can't or won't use a more comprehensive backup system before you manually edit the Registry, at least use this editor to select and back up the key that contains all the subkeys and values you plan to modify. This way, you can back up all the sections you plan to edit in one backup.

That way, if it's necessary later, you can restore these exported files, recovering any changed or deleted keys and values. Remember, though, that Regedit cannot remove entries you added that were not in the Registry before the backup! So, if an entry you add causes problems, the Registry Editor backup will not help you recover.

To back up a key and its subkeys and values, follow these steps:

  1. To run Regedit, choose Start, Run. Type regedit and click OK.

  2. Select the key you plan to modify, or a key containing all the keys you plan to modify, in the left pane.

  3. Select File, Export (see Figure 32.3).

    You can save a Registry key and any keys and values it contains with Regedit.

    Figure 32.3. You can save a Registry key and any keys and values it contains with Regedit.

  4. Choose a location and filename to use to store the Registry keys. I usually use the desktop for temporary files like this, so I'll see them and delete them later.

    TIP

    For backup purposes, I recommend not using the default extension .REG. This extension is associated with Registry entries in the Windows Explorer, and selecting a REG file in Explorer restores it to the Registry. This operation is far too serious to have happen with just a mouse click or two.

  5. Select All Files from the Save As Type list, and enter a name (possibly with an extension other than .REG—for example, c:efore.sav).

  6. Click Save. The chosen key or keys are then saved as a text file.

TIP

You can use this technique to copy a set of keys and values from one section of the Registry to another. First, export the desired key and values to a file. Edit the file with Notepad, and use the Edit/Replace menu to change all of the key names to the desired new location. Then import the file back into the Registry. I have used this method to copy a group of Registry entries under HKEY_CURRENT_USER to HKEY_USERS.Default, for example, so that all newly created user accounts will have the desired setting.

TIP

You can also use exported REG files to simplify the job of copying the same set of registry entries to multiple computers. See the “Tips from the Windows Pros” section at the end of this chapter for details.

Restoring the Registry

If you've made Registry changes that cause problems, you can try to remember each and every change you made, re-enter the original information, delete any keys you added, and thus undo the changes manually. Good luck! If you were diligent and made a backup before you started, however, you can simply restore the backup and have confidence that the recovery is complete and accurate.

Note

Restoring the Registry

To restore a Registry backup you made, follow the steps described in the following sections.

Restoring the Registry with Driver Rollback

If you encounter problems immediately after installing or updating a device driver, you might be lucky enough not to need to manually restore the Registry. Windows XP may be able to help you automatically. Use the Device Manager's “Roll Back Driver” feature to see if this fixes your problem.

Note

→ To see detailed instructions on updating device drivers, seeUpdating Device Drivers,” p. 1178.

Restoring the Registry from Windows Backup

The Windows Backup utility's Restore feature lets you replace Registry and other System files saved before a failed installation or change. This step is fairly drastic, so be sure you've exhausted the less invasive procedures before you resort to this method. If you did a full backup, you're fairly safe because all program files will be restored along with the Registry. If you backed up only the Registry itself, there's a chance that the old Registry entries won't solve any problems created by replaced system programs.

Follow these steps to restore the backup:

  1. Click Start, All Programs, Accessories, System Tools, Backup (or choose Backup if it's on your Start menu).

  2. Click Advanced Mode, and select the Restore and Manage Media tab.

  3. Select Tools, Options. Choose Always Replace the File on My Computer. (You must choose this option because you're replacing files that exist but contain the wrong information.) Then click OK.

  4. Expand the list of cataloged backups (see Figure 32.4). Then locate the backup you want to restore, and check System State. If you want to restore other files and/or volumes backed up at the same time, check them as well.

    You can restore the Registry by restoring a System State backup.

    Figure 32.4. You can restore the Registry by restoring a System State backup.

  5. Select Start Restore. A dialog box then warns you that System State is always restored to the current location. Click OK.

  6. When a dialog box offers you Advanced options, just click OK to proceed.

  7. A dialog box appears to let you enter the name of the backup set file you're restoring. Enter the name you used when you made the backup—for example, c:efore.bkf. Correct the name if necessary, and click OK.

  8. When the backup is complete, Backup asks you to restart the system. You really must reboot now because the Registry files have not actually been restored. The recovered Registry data has been set aside and will only be installed the next time Windows starts. If you make any other Registry changes before restarting, they will be lost when the restored files are installed.

Restoring the Registry from Regedit

If a Registry editing session has gone awry, and you need to restore the Registry from a Regedit backup, follow these steps:

  1. In Regedit, select File, Import.

  2. Select All Files from the Files of Type list.

  3. Locate the file you used to back up the Registry key or keys—for example, c:efore.sav.

  4. Select Open.

The saved Registry keys are then imported, replacing any changes or deletions. However, any keys or values you've added to the Registry will not be removed. If they are the cause of the problem, this restore will not help.

If the Registry problems persist, you can try a rather drastic measure: You can use Regedit to delete the key or keys that were changed and then import the backup file again. This time, any added keys or values are removed. I suggest you try this approach only with keys related to add-on software, not for any of the Microsoft software or hardware keys.

TIP

My final word on Registry repair: If you encounter problems with the Registry entries for hardware or for Windows itself, and restoring the Registry doesn't help, you are probably better off reinstalling Windows or using the Emergency Recovery procedure than trying any further desperate measures to fix the Registry.

TIP

If you encounter what you think are Registry problems with add-on software, your best bet is to uninstall the software, if possible, and reinstall it before attempting any Registry restores or repairs.

Using Regedit

You might never need to edit the Registry by hand. Most Registry keys are set by the software that uses them. For example, Microsoft Office sets its own preference values, and the Control Panel applets set the appropriate Display, Sound, and Networking Registry entries. In a way, the Control Panel is mostly just a Registry Editor in disguise.

You might need to edit the Registry by hand if directed by a technical support person who's helping you fix a problem, or when you're following a published procedure to make an adjustment for which there is no Control Panel setting.

In the latter case, before going any further, I need to say this one last time, to make it absolutely clear: Few circumstances really require you to edit the Registry by hand. Back up the Registry, or at least the section you want to change, before making any changes.

In the next few sections, I'll cover the basics of the Registry Editor.

Viewing the Registry

The Registry Editor doesn't have a Start menu item. You must run it from the Start, Run dialog. Enter regedit and click OK.

Regedit displays a two-pane display much like Explorer, as shown in Figure 32.5. The top-level keys, which are listed below My Computer, can be expanded just like drives and folders in the Explorer. In the pane on the right are the values for each key. The name of the current selected key is shown in the status bar.

The Regedit screen shows keys on the left and values on the right.

Figure 32.5. The Regedit screen shows keys on the left and values on the right.

Values have names, just as the files in a folder do, and it's here that configuration information is finally stored. Each key has a (Default) value, which is the value of the key itself, and any number of named values. For example, in Figure 32.5, key HKEY_CURRENT_USERDesktop is shown. The value of HKEY_CURRENT_USERDesktop itself is undefined (blank), and the value HKEY_CURRENT_USERControl PanelDesktopCoolSwitch is 1.

Registry values have a data type, which is usually one of the types shown in Table 32.3.

Table 32.3. Data Types Supported by Regedit

Other data types such as REG_DWORD,_BIG_ENDIAN, and REG_FULL_RESOURCE_DESCRIPTOR exist, but they are obscure, rare, and can't be edited with Regedit.

REG_SZ

Textual information, a simple string of letters

REG_DWORD

A single number displayed in hexadecimal or decimal

REG_BINARY

Binary data, displayed as an arbitrary number of hexadecimal digits

REG_MULTI_SZ

A string that can contain more than one line of text

REG_EXPAND_SZ

Text that can contain environment variables (such as %TEMP%)

Searching in the Registry

You can search for a Registry entry by key name, value name, or the contents of a value string. First, select a starting point for the search in the left pane. You can select My Computer to select the entire Registry, or you can limit your search to one of the top-level keys or any subordinate key. Next, select Find from the menu, and enter a search string into the Find dialog. The Find feature is not case sensitive, so upper- and lowercase don't matter. You can check any of the Look At boxes, as shown in Figure 32.6, to designate where in the Registry you expect to find the desired text: in the name of a key, in the name of a value, or in the data, the value itself.

In the Find dialog, you can select whether to search key names, value names, or value data.

Figure 32.6. In the Find dialog, you can select whether to search key names, value names, or value data.

Check Match Whole String Only to search only for items whose whole name or value is the desired string.

NOTE

Most of the time I check all the Look At boxes but not Match Whole String Only.

Select Find Next to start the search. The Regedit display indicates the first match to your string, and by pressing F3, you can repeat the search to look for other instances.

TIP

The search function has two limitations:

  • You can't enter a backslash () in the search string when looking for a key or value name; Regedit won't complain, but it won't find anything either.

  • You can't search for the initial HKEY_xxx part of a key name. That's not actually part of the name; it's just the section of the Registry in which the key resides.

So, to find a key named, for example, HKEY_CLASSES_ROOTMIDFileshellPlayCommand, you can't type all that in and have Find jump right to the key. If you already know the full pathname of a key, use the left pane of Regedit to browse for the key directly.

Editing Keys and Values

Regedit has no Save or Undo menu items. Changes to the Registry happen immediately and permanently. Additions, deletions, and changes are for real. This is the reason for all the warnings to back up before you poke into the Registry.

Adding a Value

To add a value to a key, select the key in the left pane, and choose Edit, New. Select the type of value to add; you can select any of the supported Registry data types: String, Binary, DWORD, Multi-String, or Expandable String. (The instructions you're following will indicate which type of value to add.) A new value entry then appears in the right pane, as shown in Figure 32.7.

New value adds an entry in “Rename” mode.

Figure 32.7. New value adds an entry in “Rename” mode.

Enter the new value's name, and press Enter to edit the value.

  • For string values, enter the text of the desired string.

  • For DWORD values, choose Decimal or Hexadecimal, and enter the desired value in the chosen format (see Figure 32.8).

    You can choose to enter a DWORD value in either decimal or hexadecimal notation.

    Figure 32.8. You can choose to enter a DWORD value in either decimal or hexadecimal notation.

  • For binary values, enter pairs of hexadecimal characters as instructed. (You'll never be asked to do this, I promise.)

Changing a Value

If you want to change a value, double-click it in the right-hand pane to bring up the Edit Value dialog. Alternatively, you can select it and choose Edit, Modify from the menu, or right-click and select Modify from the context menu. Then make the desired change, and click OK.

That is all you will likely ever need to do with Regedit. However, in the extremely unlikely case that you would want to delete a value or add or remove a key, the following sections can help see you through these processes.

Deleting a Value

If you've added a Registry value in the hope of fixing some problem and found that the change wasn't needed, or if you're instructed to delete a value by a Microsoft Knowledge Base article or other special procedure, you can delete the entry by viewing its key and locating the value on the right-hand pane.

Select the value and choose Edit, Delete from the menu, or right-click and select Delete from the context menu. Confirm by clicking OK.

CAUTION

There is no Undo command in the Registry Editor—when you delete a value, it's gone for good. Be sure you've made a Registry backup before editing or deleting Registry keys and values.

Adding or Deleting a Key

Keys must be added as subkeys to existing keys; you can't add a top-level key. To add a key, select an existing key in the left pane, and select Edit, New, Key from the menu. Alternatively, right-click the existing key, and select New, Key from the context menu. A new key appears in the left pane, where you can edit its name, as shown in Figure 32.9. Press Enter after you enter the name.

A new key appears in “Rename” mode.

Figure 32.9. A new key appears in “Rename” mode.

You can delete a key by selecting it in the left pane and choosing Edit, Delete from the drop-down menu, or by right-clicking it and selecting Delete from the context menu. Click OK to confirm that you do intend to delete the key. Deleting a key deletes its values and all its subkeys as well, so without the protection of Undo (or a Registry Recycling Bin), this action is serious.

Renaming a Key

As you have probably guessed, the pattern for renaming a key follows the Explorer exactly: Choose the key in the left pane and select Edit, Rename, or right-click the key and select Rename. Finally, enter a new name, and press Enter.

CAUTION

Don't attempt to rename keys without a very good reason, such as you mistyped the name of the key you were adding. If Windows can't find specific Registry keys it needs, Windows may not boot or operate correctly.

Using Copy Key Name

As you have probably noticed by now, Registry keys can be pretty long, tortuous things to type. The Registry Editor offers a bit of help to finger-fatigued Registry editors (and authors): Choosing Edit, Copy Key Name puts the name of the currently selected key into the Clipboard, so you can paste it elsewhere, should the need arise. For example, when you've found a neat Registry trick, you might want to email your friends about it.

Advanced Registry Editing

The Registry Editor has some advanced features you'll need only if you're managing a network of Windows XP computers or if you run into really serious problems with your Windows installation.

Editing the Registry of a Remote Computer

The Registry Editor permits administrators to edit the Registry of other computers on a network. Of course, this operation is highly privileged, and you must have administrator privileges on the computer whose Registry you want to edit. To edit a remote computer's Registry, choose File, Connect Network Registry. Next, enter the name of the remote computer, or click Advanced, then Find Now to select one graphically; then click OK. (Interestingly, Browse doesn't let you use Active Directory to select a computer to manage, only the basic “local computers” list.)

When you've connected, the computer's Registry keys appear in the list along with your own, as shown in Figure 32.10.

Viewing and editing a remote computer's Registry.

Figure 32.10. Viewing and editing a remote computer's Registry.

NOTE

For you to be able to connect to the Registry on a Windows 95 or 98 computer, it must have Remote Management installed. This option must be installed as part of the computer's Network Services through the Network Control Panel. Windows Me is not supposed to support remote Registry editing but you can install the Remote Management feature from a Windows 98 CD-ROM. On Windows NT, 2000, and XP, the Remote Registry service is installed automatically.

Note that only the two main “real” top-level keys will appear: HKEY_LOCAL_MACHINE and HKEY_USERS—the virtual keys will not. When you have finished editing the remote computer's Registry, right click its name in the left-hand pane and select Disconnect.

CAUTION

You can't use File, Export or File, Import to save or load a remote Registry's values. These commands might appear to work, but they operate only on the local computer's Registry.

Editing Registry Entries for Another User

If you open a Registry Editor and look under HKEY_USERS, you will find that the only available subkeys are .DEFAULT, four entries for system services, and your own subkey, which is also accessible as HKEY_CURRENT_USER. As I mentioned earlier, Windows stores various parts of the Registry in data files called hives, and loads the hive containing your part of HKEY_USER only when you are currently logged on. When you log out, your subkey is unloaded from the Registry, and the hive file is left in your user profile folder. (And if you have a roaming user profile, your profile folder is copied back to the domain server. That's how your settings are able to follow you from one computer to another.)

As an administrator, you might find it necessary to edit HKEY_USER entries for another user. For example, a startup program in HKEY_CURRENT_USERSoftwareWindowsCurrentVersionRun might be causing such trouble that the user can't log on. If you can't log on as that user, you can edit his or her HKEY_CURRENT_USER Registry keys in another way:

  1. Log on as Administrator and run Regedit.

  2. Select the HKEY_USERS window.

  3. Highlight the top-level key HKEY_USERS.

  4. Select File, Load Hive.

  5. Browse to the profile folder for the desired user. It is in Documents and Settingsusername for a local machine user in a workgroup, or for a Windows Server domain, in the folder used for user profiles on the domain controller. The name of this folder might have the computer name or a domain name attached. For example, on one computer my profile folder name is “bknittel.java”.

  6. Type the filename NTUSER.DAT. (The file does not appear in the Browse dialog because it's “super hidden”: a hidden system file). Then click Open.

  7. A dialog then appears, asking you to enter a name for the hive. While HKEY_USERS normally loads user hives with a long numeric name, I suggest that you type the user's logon name. Click OK. The user's Registry data is then loaded and can be edited, as shown in Figure 32.11.

    An offline user's Registry hive is now loaded and can be edited.

    Figure 32.11. An offline user's Registry hive is now loaded and can be edited.

  8. When you're finished editing, unload the hive. Select the key you added under HKEY_USERS (for example, the offline user key in Figure 32.11), and select File, Unload Hive. Confirm by clicking Yes on the warning dialog.

Editing Registry Entries for Another Windows Installation

If you need to retrieve Registry entries from an installation of Windows 2000 or XP on another hard disk or partition, you can load any of that installation's hive files for editing or exporting. This might happen when you

  • Install a new hard disk and install Windows XP on the new disk.

  • Have a severe Registry error that prevents Windows from booting at all. If you can't use the Emergency Recovery procedure to fix the problem, you can install Windows onto another drive, partition, or folder on your computer. When you boot up that copy of Windows, you can load the original installation's Registry files for editing. Then you can try to boot up the original installation.

To edit the other installation's Registry, you will need to locate its hive files. They are usually found in the locations shown in Table 32.4.

Table 32.4. Usual Location of Hive Files

Key

Hive File

HKEY_LOCAL_MACHINESAM

winntsystem32configsam

HKEY_LOCAL_MACHINESecurity

winntsystem32configsecurity

HKEY_LOCAL_MACHINESoftware

winntsystem32configsoftware

HKEY_LOCAL_MACHINESystem

winntsystem32configsystem

HKEY_USERS.Default

winntsystem32configdefault

To edit another Windows installation's Registry, use the technique I described under “Editing Registry Entries for Another User” But instead of locating a user's NTUSER.DAT file, locate the desired hive file on the other hard drive or partition. Unload it after you've exported or corrected the desired information.

Editing Registry Security

Just as files and folders have security attributes to control access based on user and group identity, Registry keys and values have a complete set of Access Control attributes that determine who has rights to read, write, and modify each entry. For example, the Registry keys that control system services can't be modified by non-Administrator users; otherwise they could conceivably make the entries refer to their own programs which would then run at a high privilege level. Access controls on the Registry is thus a key part of Windows security.

NOTE

It's rare that you should have to modify registry security settings, but it does happen sometimes. The usual case is that an incorrectly designed program will set up registry keys during installation and will make them readable and/or writeable only by the user who installed the program, which is usually Administrator. Then, you try to run the program from your normal user account, the program can't read or modify its registry values. This happened to me with my @backup online backup service, which was unable to update its “last backup” information unless I was logged on as Administrator. Making the software's registry keys writable by the Power Users group fixed this problem. Also, Microsoft will sometimes recommend modifying registry security in one of their all-too-frequent emergency security bulletins.

If you absolutely must change permissions or auditing controls, locate the desired key or value, right-click it, and select Edit, Permissions. The Permissions dialog looks just like the comparable dialog for files and folders (see Figure 32.12), and lets you set read, write, and modify rights for specific groups and users. There is a corresponding set of audit settings.

Registry Key Permissions control which users or groups are allowed to see or modify the Registry key and its values.

Figure 32.12. Registry Key Permissions control which users or groups are allowed to see or modify the Registry key and its values.

Needless to say, incorrectly changing Registry key access rights can cause profound problems with Windows, so I encourage you not to make any changes to Registry access settings unless you're explicitly instructed to do so.

Other Registry Tools

I've said that, although most Windows functions are controlled by Registry entries, most of these settings are made using Control Panel applets, Computer Management tools, and application preferences menus. There are some settings, however, that can't be made using any standard Windows program.

Making these changes used to require you to directly edit the Registry. Now, however, you'll find a raft of third-party add-on tools to make these changes more safely via a nice graphical user interface. Let's go through a couple of the more popular utilities.

TweakUI

Microsoft produced a tool called TweakUI. If you don't geek-speak, its name means “adjust the user interface in cool and arcane ways.” You can download TweakUI from Microsoft's Web site at www.microsoft.com; search for “Windows XP powertoys.”

Using TweakUI, you can adjust mouse sensitivity, window movement, animation effects, the appearance of icons in the Explorer views, the visibility of desktop icons such as Internet Explorer, the visibility of local and network drives in the Explorer, and some security features such as hiding the name of the last-logged-on user. Tweak UI is covered in more detail in Chapter 23, “Tweaking the GUI.”

X-Setup Pro

X-Setup Pro, by Xteq, is like TweakUI on steroids. This shareware program offers nearly 1,700 settings and tweaks using a slick graphical Explorer-like interface. It includes wizards for some of the more complex tasks like mapping file types to Explorer icons. One of its niftiest features is its ability to record a series of changes to a log file that it can then play back on other computers. Its pricing structure was undergoing change at press time, but the cost should be somewhere between free and US $7. You can download it from www.x-setup.net.

Registry Toolkit

Registry Toolkit is a shareware Registry Editor made by Funduc software with a nifty search-and-replace system. You can scan the Registry, changing all occurrences of one string to another, which is great for some nasty jobs. It also keeps a log of changes made so that edits can be undone. Its user interface isn't very comfortable or slick, but if you need to manage a lot of identical changes in the Registry, this is one tool to check out. It's free to try; $25 to register, at www.funduc.com.

Resplendent Registrar

Resplendent Registrar is a powerful Registry editing tool produced by Resplendence Software Projects (www.resplendence.com) with a drag and drop interface. Other features include a Registry defragmentation tool, a Registry compare tool, support for volatile Registry keys, and the option to edit Registry hive files on disk, allowing power users and administrators to edit Registry images of broken Windows installations. It's also shareware ($44.95), and there's a free “lite” version.

Tweak-XP Pro

Tweak-XP Pro, available from www.totalidea.com combines tweaking tools with additional enhancements and optimizing tools such as a RAM-disk, pop-up ad blocker, RAM reorganizer, file shredder, and so on. The cost is $39.95 for one computer, with multiple-license discounts available.

Registry-Hacker Web Sites

Not surprisingly, whole Web sites have sprung up to share Windows Registry tips and tricks. If you're interested, you might check out these two sites that I've found to be occasionally useful:

www.winguides.com/registry

www.jsiinc.com/reghack.htm

But to be honest, I don't find all of the listed tips to be helpful, and the TweakUI program I discussed earlier provides an easier way to many of the more useful things.

Google

As for so many things, when it comes to demystifying the Registry, Google is your best friend. If you're looking for the purpose and valid settings of a particular registry key, search Google for the full key name. It's easy: Right-click the key name in the Registry Editor, select Copy Key Name, and paste the name into the Google search field. If you don't get an answer, pare the name down section by section, starting at the left side:

name1
ame2
ame3
ame4

then

name2
ame3
ame4

then

name3
ame4

finally

name4

You can also try searching the microsoft.com Web site using Microsoft's search function, but frankly, Google does a much better job of indexing Microsoft's site than Microsoft does.

Registry Privileges and Policies

In Windows NT, 2000, and XP Professional, Registry keys and values can have permissions set to define who has permission to view and edit them, just like folders and files. The Windows Policies system, which allows administrators to restrict users' ability to change their computer configuration, is based on Registry access control.

In a nutshell, Policies install Registry keys and values that tell Windows administrative programs such as Control Panel to hide certain controls and settings. For example, a policy entry might make the Display Control Panel hide the Power Management settings. These restricting Registry entries are then locked into place with permission settings that prevent the users from seeing or changing them.

You don't usually manage these entries using Regedit, but by using the Policy Editor and Manager, which is described in Chapter 28, “Managing Users.”

CAUTION

I gave this warning before, but it bears repeating: Trying to manually change Registry privileges is very dangerous. Don't do it! You could easily render your system not only inoperative, but also out of your own ability to repair.

NOTE

I have one more tip that's so cool, I put it at the end of the chapter under “Tips from the Windows Pros.”

Troubleshooting

Signs of Registry Problems

Signs of Registry Problems

How can I determine whether Windows problems are caused by the Registry?

Registry corruption can take two forms: either the Registry's database files can be damaged by an errant disk operation, or information can be entered incorrectly, by hand or by a buggy program. No matter what the cause, the result can be a system that won't run, or one that reboots itself over and over.

Other signs of Registry corruption or errors could be as follows:

  • Drivers aren't loaded, or they give errors while Windows is booting.

  • Software complains about components that aren't registered or cannot be located.

  • Undesirable programs attempt to run when you log in.

  • Windows does not boot, or it starts up only in Safe mode.

Recovering from a Suspected Registry Problem

How do I recover from a Registry problem?

If any of the signs of a Registry problem occur just after you install new software or hardware, after you've edited the Registry manually, or after an unexpected and unprotected power loss to the computer, then you might have a Registry problem. Try these fixes in turn, checking after each step to see whether the problem is resolved:

  1. If the problem occurred right after you installed new software, see whether the software manufacturer has released any updates for the software. If an update is available, install the updated software before proceeding. In any case, try reinstalling the software. If that doesn't fix the problem, uninstall it and then reinstall it again.

  2. If the problem occurred right after installing a new piece of hardware or updating a device driver, try updating the device driver or using the Driver Rollback feature.

    Note

    → For information on the Device Rollback, seeDevice Driver Rollback,” p. 1179.

  3. Restart Windows, and just before Windows startup screen would appear, or when the Please Select the Operating System to Start message appears, press the F8 key. Select Last Known Good Configuration. Last Known Good uses the previous boot's version of HKEY_LOCAL_CONFIG, so good hardware settings might be preserved there.

  4. If you get to this point, get professional technical help if it is available. If that's not an option, continue to step 5.

  5. Use System Restore to try to return to an earlier saved system configuration.

    Note

    → For information on the System Restore, seeSystem Restore,” p. 1285.

  6. If none of these fixes solve the problem, or if you can't get Windows started, try starting Windows in Safe mode. Starting this way circumvents many display driver setup problems. If you suspect the problem is caused by the display driver, set Windows to use the Standard VGA driver and restart. Then reinstall your normal graphics adapter (using the most recent updated driver).

  7. If you have a backup containing the Registry (System State), restore it. This fix should return you to a state where you had a working system.

  8. Use the Emergency Repair Disk to repair Windows (Repair mode).

  9. Reinstall Windows in Repair mode.

    Note

    → For more information about reinstalling Windows, seeAs a Last Resort,” p. 1282.

  10. Reinstall Windows in Clean Install mode. This will require you to reinstall all of your applications and reconfigure users, so it's an absolute last resort.

Tracking Down Errant Startup Programs

How do I track down and eliminate startup programs that don't appear in the Start menu but start anyway when I launch Windows?

When you log on, Windows examines the Startup folder in your personal Start MenuPrograms folder as well as in the corresponding folder under Documents and SettingsAll Users.

In addition, Windows examines the Startup folder in the Start Menu Programs folders of both the user logging in and the All Users folder.

Windows also looks in the Registry for values in the following keys:

HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce

The LOCAL_MACHINE entries are run for all users, and the CURRENT_USER entries are, of course, specific to each individual user.

If you're trying to eliminate a Startup program and can't find it in your own Startup folder, look in the following places:

  1. Look for a shortcut or program in the folder Documents and SettingsDefault UserStart MenuProgramsStartup.

  2. Examine SYSTEM.INI in C:windows. Look for load= or run= lines in the [boot] section. The program might be run from here.

  3. Examine the Startup folders under Programs in both your Start Menu folder and in the All Users Start Menu folder. Right-click your Start button, and select Explore to examine these folders. Note: if your disk uses the NTFS format, you must have Computer Administrator privileges or be a member of the Power Users group to delete an entry from the All Users folder.

  4. Run Regedit, and browse to key HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion. Look under any subkeys named Run, RunOnce, or RunOnceEx. Check their values for entries that are starting the undesired program. The RunOnce entries are often set by installer programs to complete an installation process after rebooting and are sometimes not eliminated properly.

  5. Repeat the same process with HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion, again looking under Run, RunOnce, and RunOnceEx.

NOTE

If you can't log in as the affected user, and you suspect that the startup program is run from the HKEY_CURRENT_USER Registry entry, see “Editing Registry Entries for Another User” earlier in this chapter.

Tips from the Windows Pros: Deploying Registry Settings with REG Files

If you find yourself having to make the same registry settings on a whole department's or company's worth of computers, or if you frequently reinstall Windows and have to reapply the same settings every time you reload, you should know this neat way of setting a bunch of registry entries with just a mouse-click or two.

We discussed REG files earlier in this chapter as a way of backing up and restoring the registry. You can also use REG files to automatically deploy (that is, distribute and install) a set of identical registry settings to several computers. For example, I've used this technique to quickly copy a complicated set of file associations in the HKEY_CLASSES_ROOT registry section to all of the computers in a client's office.

The trick here is to export the relevant registry keys and values using regedit's Export feature, as described earlier in the chapter. Trim down the resulting REG files with Notepad so that they contain only the exact entries that you need to copy. Then, using cut and paste, put them all into one file. The first line should contain Windows Registry Editor Version 5.00, and this should be followed by key names, with any necessary values under the keys.

REG files can also delete registry keys or values. To delete a value, specify a single minus sign (-) after the value's equals sign. To delete a key (and all subkeys and values under it), precede the key name with a minus sign. For example, the following REG file deletes a value named GoodbyeValue and the key named HKEY_CURRENT_USERSoftwareGoodbyeKey.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareSome key or another]
"GoodbyeValue"=-

[-HKEY_CURRENT_USERSoftwareGoodbyeKey]

These entries can be mixed in with other REG entries that set keys. For instance, you might want to delete a given key—thus removing any extraneous subkeys and values—before you install a clean, new version:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USERSoftwareMyKey]

[HKEY_CURRENT_USERSoftwareMyKey]
@="Standard default Value"
value1="standard value1 setting"
value2="standard value2 setting"

Here's an example of how this all works. The following REG file deletes any previous associations for the file extensions .sgm and sgml, and creates an association for both to open with application sgmledit.exe.

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT.sgm]
[-HKEY_CLASSES_ROOT.sgml]
[-HKEY_CLASSES_ROOTSGML File]

[HKEY_CLASSES_ROOT.sgm]
@="SGML File"

[HKEY_CLASSES_ROOT.sgml]
@="SGML File"

[HKEY_CLASSES_ROOTSGML Fileshellopencommand]
@=""c:\program files\SGMLEdit\sgmledit.exe" "%1""

To deploy the registry settings to a given computer, double-click the REG file in an Explorer window, or type into a Command Prompt window the command

regedit filename.reg

replacing filename.reg with the name of your REG file. You might need to specify the file's full path, if you're carrying it around on a floppy disk or have it stored on a network shared folder. In some circumstances, you might want to reset some registry values every time a user logs on. You can do this by running the regedit command from a logon script. In this case, you don't want the users to have to confront a dialog box asking them to confirm importing the values. You can silently install a Registry file from the command line using the following command format:

regedit /s filename.reg
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.23.101.63