PRB: Ccdist.exe Fails to Register Comcat.dll Until Reboot (163958)
The information in this article applies to:
- Microsoft Platform Software Development Kit (SDK) 1.0
This article was previously published under Q163958 SYMPTOMS
Attempting to register a component using RegSvr32.exe or via self-
registration using DllRegisterServer() fails when the control uses the
component category API.
CAUSE
The problem is due to the self-extracting executable Ccdist.exe that
installs the component category DLL but fails to register the component in
the system registry until the user reboots the machine.
MORE INFORMATION
Component Categories help identify areas of functionality that an OLE
component may support. Applications or components that take advantage of
this functionality may redistribute the self-extracting executable,
Ccdist.exe, from the Win32 SDK. Ccdist.exe then installs the necessary
component categories DLL, Comcat.dll.
Typically, when a redistributable file is distributed as a self-extracting
executable, it copies the files to the designated directory in the system
and makes the appropriate registry entries. The problem with Ccdist.exe is
that it installs Comcat.dll into the system, but fails to register it,
until the user reboots the machine. This is due to a limitation in the tool
Microsoft used to create the self-extracting Ccdist.exe, where registration
happens only on reboot.
Before a component can call any of the ICatRegister functions to register
and unregister component category information in the registry, it must
first instantiate the component category manager by calling
CoCreateInstance (CLSID_StdComponentCategoriesMgr,...). This
CoCreateInstance() call fails because although the Comcat.dll is present in
the system, it was not registered correctly.
The workaround is to either reboot after installing the DLL, or to call
"RegSvr32 ComCat.DLL" after running Ccdist.exe.
Modification Type: | Major | Last Reviewed: | 11/8/2001 |
---|
Keywords: | kbprb KB163958 |
---|
|