Вы можете проверить, находится ли clcid ocx под HKEY_CLASSES_ROOT.
Вот простой код, который я использую для обнаружения во время выполнения, чтобы проверить, зарегистрирован ли указанный ocx.
#include<windows.h>
...
//Check if an ocx is resisted, and push warning
HKEY subKey = NULL;
LONG ret = RegOpenKeyEx(HKEY_CLASSES_ROOT, _T("CLSID\\{XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX}"), NULL, KEY_QUERY_VALUE|KEY_WOW64_32KEY, &subKey);
//Note that some CLSID of versioned ocx is under HKEY_CLASS_ROOT\TypeLib\{XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX}
if(ret != ERROR_SUCCESS)
{
TCHAR message[512];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,ret,0,message,512,NULL);
CString msgStr = message;
#ifdef DEBUG //Extra message on DEBUG mode
AfxMessageBox(msgStr.GetBuffer());
#endif
AfxMessageBox(_T("OCX not registered"), MB_OK);
}
else
{
AfxMessageBox(_T("OCX is registered"), MB_OK);
RegCloseKey(subKey); //Remember to close opened key handle.
}