Lesson 6 | In-process COM servers: Registering and unregistering COM objects |
Objective | Describe how an in-process server registers COM objects. |
HKCR\CLSID\ {clsid} |
Under HKEY_CLASSES_ROOT\CLSID the COM object's CLSID , delimited by curly brackets ({}), is added as a key. For example:HKEY_CLASSES_ROOT\CLSID\ {5E533531-5EAC-11d2-85D9-08001700C57F}
Each COM object in a server is registered using a different CLSID. COM uses the CLSID registry entry to find the server that implements a specific COM object.
|
HKCR\CLSID\{clsid} value | The value portion of the CLSID entry is optional.
Normally, applications put the name of the COM object in as the value. For example:
HKEY_CLASSES_ROOT\CLSID\ {5E533531-5EAC-11d2-85D9-08001700C57F} = "MyComObject"
|
HKCR\{clsid} \InprocServer32 | Under HKEY_CLASSES_ROOT\CLSID\{ ... } , a subkey called InprocServer32 is added. For example:HKEY_CLASSES_ROOT\CLSID\ {5E533531-5EAC-11d2-85D9-08001700C57F}\ InprocServer32
|
HKCR\CLSID\{clsid} \InprocServer32 value |
The value associated with the InprocServer32 key is the full directory path to the DLL housing the in-process server. For example:HKEY_CLASSES_ROOT\CLSID\ {5E533531-5EAC-11d2-85D9-08001700C57F}\ InprocServer32 = "c:\Dev\MyComObject\Debug\ComServer.dll"
|
ProgID | Other optional entries include a ProgID . A ProgID is a string that can be used to look up an object's CLSID. |
Exported functions | In-process servers implement two exported functions to support registering and unregistering COM classes,
DllRegisterServer and DllUnregisterServer.
When DllRegisterServer is called, a server should register each COM object it implements. When DllUnregisterServer is called, a server should remove all entries for its COM
objects from the registry.
|
Registration with RegSvr32 | Command-line tool RegSvr32.exe is used to register and unregister in-process servers.
Regedit.exe can be used to examine the contents of the registry. |