2009-04-02 15 views

Respuesta

4

Lo que solía hacer (y lo haría, si lo necesitaba de nuevo) es intentar crear una instancia de objeto de una clase que sabe que está en la biblioteca COM, ya sea por ProgID o GUID, y comprobar si hay algún error.

+0

Debe ser más robusto que el escaneo de registro, más la detección de una instalación incorrecta. Depende de si cargar el archivo DLL o crear el objeto es caro. –

+0

Derecha. Probablemente sea mejor intentar y usar una clase "adecuada" de la biblioteca. Y supongo que no habría necesidad de verificar si la biblioteca COM está instalada si no está planeando hacer al menos algo con la biblioteca, entonces cargarlo para verificar la instalación generalmente no es un problema ... – peSHIr

0

Pruebe y créelo, y maneje el error si no es así.

En Win32 CoCreateInstance devolverá REGDB_E_CLASSNOTREG si no está instalado (incluido, IIRC, si está registrado pero se elimina el dll/exe que lo implementa).

En .NET, el conjunto de interoperabilidad COM generado generará algún error (es necesario verificar esto, no tiene un código conveniente para probar para qué tipo de excepción). Nota. si falta el ensamblado de interoperabilidad, se tratará como un ensamblaje faltante que posiblemente genere un error de carga de la aplicación.

Cuestiones relacionadas