Why does Windows use a registry table

Create merge module registration tables

  • 2 minutes to read

Use the Merge Module registration tables according to the type of registration information.

TypeLib, Class, AppID, ProgID, Extension, Verb or MIME tables

For type libraries, classes, extensions and verbs, create registration information in the typelib, class, AppID, ProgID, extension, verb or MIME tables of the merge module. If you use the registry table to add this information, Windows 2000 cannot provide system-wide advertisements for these components.

Merge module authors can choose not to register using the class table for the following reasons:

  • To be registered by the class table, the file must be the KEYPATH of the associated component. This may require an acceptable change in the way the components are organized.
  • A COM command might trigger an installation attempt to reinstall an advertised class. Authors can choose not to register a class using the Classes table to avoid triggering a reinstallation if the client computer does not support a user interface.

Registration table

Use the Registration Table to add registration information that cannot be created in the TypeLib, Class, AppID, ProgID, Extension, Verb, or MIME tables. Windows 2000 cannot provide a system-wide advertisement for components that use the registry table.

When creating the registration table, see File Paths Using the [# File] [. File] format instead of [directory] filename. The latter format does not support "run-from-source" installation. In the first format, missing files and faulty components are more easily identified.

Be careful when using formatted text in the key column of the registry table. Because Windows Installer does not reinstall components that are already installed, using formatted text in this field can leave registry keys behind when the application is removed.

Selfreg table

The use of the "selfreg" table is not recommended. For a list of reasons to use self-registration, see selfreg Table. You should use the TypeLib, Class, AppID, ProgID, Extension, Verb and MIME tables instead, if possible, and the Registration table in all other cases.