HKCR is the backbone of the OLE/ActiveX subsystem. The shell, the Explorer, and many applications depend on the data stored here for prosaic tasks such as deciding which icon to display with a file or what to do when the user double-clicks a file. OLE applications need this data to determine what servers to start when a user embeds or links a foreign object into a document, and the Distributed OLE and DCOM systems need it too.
In Windows NT 4.0 and previous versions of NT, this root key got its data solely from the software classes subkey under HKLM, that is HKLM\Software\Classes. This worked fine, although the system could register program classes only on a per-machine basis. In Windows 2000, the software classes under HKCU\Software\Classes are merged with the HKLM software classes to make up HKCR. Defined as per-user class registration, this allows program classes to be registered independently for each user.
The original Win3.x scheme for linking a file with the application that created it was to associate the file’s extension with the name of an executable. With the introduction of OLE, though, it became necessary to associate file contents with DLLs, since an OLE server might be a DLL instead of a standalone application. The Win 3.x File and Program Managers were primitive at best, and to improve them Microsoft needed a lot more information about files, their creators, and their types.
The starting point for these improvements is the set of filename-extension ...