When a control is registered, it makes an entry in the TypeLib section of the registry indicating which version of the interface it supports. If a different version of the control is installed without unregistering the previous one, such as when a service pack is applied, the later version is added to the TypeLib entry. The previous version is not available despite being in the registry, because the control has been overwritten. A worse situation arises when an installation program overwrites a control with an older version, the newer version of the interface is the one which is no longer available. Programs may not be able to run under these circumstances.
If the previous version of the control file was in a different location, the faulty registry entries can be removed by unregistering it, then re-registering the new one. Usually, the previous file is overwritten by the installation, and the registry entries must be removed by hand. To be sure of getting rid of the faulty entries, first unregister the control, then delete all the TypeLib registry entries which refer to the unregistered control file. Finally, re-register the file. You can use COMclean to remove the faulty entries.