Bueno parece que yo mismo me he resuelto el problema despues de unos dias; aqui esta el codigo tanto para instalar como para desinstalar un ActiveX:/* Descripción: Función que se utiliza para instalar componentes ActiveX
en el registro de Windows sin necesidad de utilizar REGSVR.EXE.
Necesita: Una variable de tipo LPCTSTR pasada como referencia
constante; dicha variable deberá contener la ruta y el nombre del
componente ActiveX a instalar.
Modifica: El registro de Windows en el caso de que pueda registrar la
susodicha componente.
Devuelve: Una variable booleana indicando si la instalación tuvo
éxito (true) o si se produjo un error (false).
Nota: Esta función también se puede utilizar para instalar librerías
de enlace dinámico, es decir, DLL's. */
bool InstallActiveX (const LPCTSTR &StrOcxName)
{
bool exito=false;
if (OleInitialize(NULL) == S_OK)
{
HINSTANCE hOcx;
hOcx=LoadLibrary(StrOcxName);
if (hOcx != NULL)
{
HRESULT (STDAPICALLTYPE *punt_fun)(void);
(FARPROC&)punt_fun=GetProcAddress(hOcx,"DllRegisterServer");
if (punt_fun != NULL)
{
if ((*punt_fun)() == S_OK)
exito=true;
}
FreeLibrary(hOcx);
}
OleUninitialize();
}
return exito;
}
/* Descripción: Función que se utiliza para desinstalar componentes
ActiveX del registro de Windows sin necesidad de utilizar REGSVR.EXE.
Necesita: Una variable de tipo LPCTSTR pasada como referencia
constante; dicha variable deberá contener la ruta y el nombre del
componente ActiveX a desinstalar.
Modifica: El registro de Windows en el caso de que pueda desinstalar
la susodicha componente.
Devuelve: Una variable booleana indicando si la desinstalación tuvo
éxito (true) o si se produjo un error (false).
Nota: Esta función también se puede utilizar para desinstalar
librerías de enlace dinámico, es decir, DLL's. */
bool UnInstallActiveX (const LPCTSTR &StrOcxName)
{
bool exito=false;
if (OleInitialize(NULL) == S_OK)
{
HINSTANCE hOcx;
hOcx=LoadLibrary(StrOcxName);
if (hOcx != NULL)
{
HRESULT (STDAPICALLTYPE *punt_fun)(void);
(FARPROC&)punt_fun=GetProcAddress(hOcx,"DllUnregisterServer");
if (punt_fun != NULL)
{
if ((*punt_fun)() == S_OK)
exito=true;
}
FreeLibrary(hOcx);
}
OleUninitialize();
}
return exito;
}