HARDWARE
Windows re-creates HKLM\HARDWARE every time the operating system starts. This key contains configuration data that the operating system detects when it starts. This branch contains few values to customize because the branch's contents are volatile. Some values in it are useful for inventorying the computer's hardware, though. For example, you can read its settings to inventory the computer's processor. You find this value and similar ones in HKLM\HARDWARE\DESCRIPTION, and they're easy-to-read REG_SZ values.
The following list is an overview of the HARDWARE key's subkeys, and the sections following this one give more details about some of them:
This subkey describes the computer's ACPI BIOS. The values in this subkey are a bit cryptic.
This is the most interesting subkey in HARDWARE. It describes the computer's BIOS, processors, and buses. (See the “DESCRIPTION” section.)
This subkey maps the devices that the hardware recognizer detects to their device drivers in the SYSTEM branch of HKLM.
This subkey maps the computer's resources to the devices that use them. Like the ACPI subkey, this subkey is difficult to understand. Resources that the RESOURCEMAP subkey maps include bus number, DMA channels, interrupt vectors, memory ranges, and I/O ports.
TIP
You can use System Information to see the computer's hardware configuration and how Windows has been spending its resources. To use this feature, in the Run dialog box, type msinfo32. The data that System Information displays is comprehensive. Especially helpful is that you can use it to look at remote computers' configurations. And it sure beats scrounging around the registry for the same information.
DESCRIPTION
Each time Windows boots, its hardware recognizer collects information about the computer's hardware and stores it in HKLM\HARDWARE\DESCRIPTION\System. In this branch, you find three subkeys:
This subkey contains one subkey for each CPU that the hardware recognizer finds on the computer. CentralProcessor\0 is the subkey for the first processor, CentralProcessor\1 is the second, and so on. Each subkey contains values that describe the processor. For example, the value ~MHz describes the approximate speed of the processor.
This subkey contains one subkey for each FPU that the hardware recognizer finds on the computer. The organization is similar to that of CentralProcessor. Because Pentium-compatible processors contain onboard FPUs, this subkey usually corresponds to CentralProcessor.
This subkey contains one subkey for each bus that the hardware recognizer detects. The subkeys are 0, 1, and so on. Each subkey contains the REG_SZ value Identifier, which is a description of the bus: PCI and ISA. Below each bus's subkey are subkeys that describe the devices attached to the bus. This key describes only essential devices; it's not all-inclusive.
DEVICEMAP
The DEVICEMAP subkey is another interesting subkey of HKLM\HARDWARE. It maps the devices that the hardware recognizer detects to the services that drive them. Different device classes have different subkeys in DEVICEMAP. For example, this subkey typically contains the subkeys KeyboardClass and PointerClass. You don't find subkeys for every device in the computer, though. It contains subkeys only for those devices that Windows requires to start the computer. Thus, you don't find subkeys for sound cards and the like.
These subkeys contain one or more values. The values' names are the devices' names. The values' data points to the subkeys that define the services associated with those devices. For example, the subkey DEVICEMAP\KeyboardClass contains the value \Device\KeyboardClass0, and its value is \REGISTRY\MACHINE\SYSTEM\ControlSet001\Services\Kbdclass. This indicates that the service driving the keyboard is in the registry, in HKLM, and in the branch SYSTEM\ControlSet001\Services\Kbdclass.