¿Hay alguna manera programática en C# para determinar si se ha instalado una DLL COM particular? ¿O se trata de escanear el registro para el classId?Determinado mediante programación si está instalada una biblioteca COM (.DLL)
6
A
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
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
- 1. ¿Verifica si ya está cargada una biblioteca dll? (Java)
- 2. ¿Cómo puedo verificar mediante programación si hay una característica del servidor instalada en Windows Server 2008?
- 3. Agregar una biblioteca mediante programación a un proyecto de Eclipse
- 4. Detectar desde el navegador si está instalada una aplicación específica
- 5. Detectando si está instalada una base de datos Oracle
- 6. WIX: ¿Cómo detectar si está instalada una aplicación de terceros?
- 7. Haciendo que una DLL COM esté accesible
- 8. ¿Dónde está la biblioteca COM de Bonjour?
- 9. registrando com dll en wix
- 10. Inicialización de COM y uso en Win32 C++ DLL
- 11. ¿Cómo verificar si una fecha está en un rango determinado?
- 12. Registro Com y dll manifiestos
- 13. Cómo determinar si DLL es COM o .NET?
- 14. Agregar DLL mediante programación en el tiempo de ejecución
- 15. ¿Cómo puedo comprobar si un dll COM está registrado en C#
- 16. La diferencia entre DLL tradicional y COM DLL
- 17. ¿Puede NuGet distribuir un dll COM?
- 18. Tlbexp.exe en un DLL COM
- 19. En Linux: ¿cómo puedo determinar mediante programación si una interfaz NIC está habilitada y conectada?
- 20. ¿Hay alguna manera de verificar si una construcción está en Adhoc, lanzamiento, distribución mediante programación?
- 21. ¿La forma más eficiente de determinar mediante programación si un dominio web está disponible?
- 22. ¿Herramienta para crear contenedores .NET para una DLL COM?
- 23. Pruebe si hay una fuente instalada
- 24. ¿Cómo puedo verificar si Windows Installer 3.1 o una versión superior está instalada?
- 25. ¿Cómo puedo crear mediante programación una captura de pantalla de un sitio web determinado?
- 26. Iniciar y detener IIS Express mediante programación
- 27. Registre un dll COM de C#/VB.NET programáticamente
- 28. Cómo determinar mediante programación la versión instalada de IE a partir de un script
- 29. C# compruebe si un puerto COM (en serie) ya está abierto
- 30. Conexión a TFSPreview mediante programación
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. –
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