Gibt es einen programmatischen Weg in C#, um festzustellen, ob eine bestimmte COM-DLL installiert wurde? Oder geht es darum, die Registrierung für die classId zu scannen?Programmgesteuert feststellen, ob eine COM-Bibliothek (.DLL) installiert ist
Antwort
Was ich normalerweise getan habe (und tun würde, wenn ich das noch einmal benötigte), versuche eine Objektinstanz einer Klasse zu erstellen, von der man weiß, dass sie in der COM-Bibliothek ist - entweder durch ProgID oder GUID - und auf Fehler prüft.
Versuchen Sie es zu erstellen, und behandeln Sie den Fehler, wenn nicht.
unter Win32 CoCreateInstance
wird REGDB_E_CLASSNOTREG
zurück, wenn nicht installiert ist (einschließlich, IIRC, registriert, wenn aber die dll/exe es Implementierung wird dann gelöscht).
Unter .NET die generierte COM-Interop-Assembly wird einige Fehler (müssen dies überprüfen, haben keine bequemen Code, um für welche Ausnahme Typ zu testen). Hinweis. Wenn die Interop-Assembly fehlt, wird diese als fehlende Assembly behandelt, was möglicherweise zu einem Anwendungsladefehler führt.
- 1. Wie programmgesteuert prüfen, ob eine App installiert ist?
- 2. Programmgesteuert erkennen, ob eine App auf dem iPhone installiert ist
- 3. Wie kann ich programmgesteuert feststellen, ob die Visual C++ Runtime 8.0 installiert ist?
- 4. Wie kann ich feststellen, ob GreenHopper auf Jira installiert ist?
- 5. Wie kann ich feststellen, ob Python setuptools installiert ist?
- 6. Wie kann ich feststellen, ob .NET 3.5 SP1 installiert ist?
- 7. Wie kann ich programmgesteuert feststellen, ob eine DLL 32 Bit oder 64 Bit in .NET kompiliert ist?
- 8. herauszufinden, ob Python-Modul installiert ist oder im Entwicklungsmodus programmgesteuert
- 9. feststellen, ob eine andere Anwendung beschäftigt ist
- 10. Erkennen, ob eine Oracle-Datenbank installiert ist
- 11. Test, ob eine Schriftart installiert ist (Win32)
- 12. Unter Linux: Wie kann ich programmgesteuert feststellen, ob eine NIC-Schnittstelle aktiviert und angeschlossen ist?
- 13. Wie kann ich programmgesteuert feststellen, ob eine MP3-Datei CBR oder VBR ist? (vorzugsweise mit C#)
- 14. XCode 6 - iOS 8: programmgesteuert überprüfen, ob die Ansicht installiert ist
- 15. Wie kann ich feststellen, ob SP1 auf VS2008 installiert wurde?
- 16. Wie kann ich programmgesteuert überprüfen, ob eine CYGWIN-App in einem SH-Skript installiert ist?
- 17. Wie kann ich programmgesteuert überprüfen, ob eine Serverfunktion in Windows Server 2008 installiert ist?
- 18. Programmgesteuert erzeugen Sie eine C Win32 DLL
- 19. Wie kann ich feststellen, welche Chrome-Version installiert ist?
- 20. Wie kann ich feststellen, ob Jquery und Jquery UI installiert sind und welche Versionen installiert sind?
- 21. Windows App feststellen, ob TextBlock getrimmt ist
- 22. Wie kann man feststellen, ob eine EclipseLink-Entity abgetrennt ist?
- 23. Kann ich feststellen, ob eine Eigenschaft mit nhibernate verschmutzt ist?
- 24. Wie kann ich feststellen, ob eine Sitzung aktiv ist?
- 25. Wie kann ich feststellen, ob eine C-Ganzzahlvariable signiert ist?
- 26. Wie kann ich feststellen, ob eine Rust-Bibliothek veraltet ist?
- 27. Wie kann ich feststellen, ob eine Datei leer ist?
- 28. Wie kann ich feststellen, ob eine zusammengesetzte Formatzeichenfolge ungültig ist?
- 29. Wie kann ich feststellen, ob eine Datei gzip komprimiert ist?
- 30. Wie kann ich feststellen, ob eine Java-Ganzzahl null ist?
Sollte robuster sein als Registry-Scans und Erkennung einer fehlerhaften Installation. Das hängt davon ab, ob das Laden der DLL oder das Erstellen des Objekts teuer ist. –
Rechts. Wahrscheinlich am besten versuchen, eine "geeignete" Klasse aus der Bibliothek zu verwenden. Und ich schätze, es gäbe keine Notwendigkeit zu überprüfen, ob die COM-Bibliothek installiert ist, wenn Sie nicht planen, zumindest etwas mit der Bibliothek zu tun, also ist es normalerweise kein Problem, sie zu laden, um nach der Installation zu suchen ... – peSHIr