Программно определить, установлена ​​ли библиотека COM (.DLL) - PullRequest
6 голосов
/ 02 апреля 2009

Есть ли программный способ в C # определить, установлена ​​ли конкретная COM DLL? Или это вопрос сканирования реестра на предмет classId?

Ответы [ 2 ]

4 голосов
/ 02 апреля 2009

Что я обычно делал (и делал бы, если бы мне это снова понадобилось), это пытался создать экземпляр объекта класса, который, как вы знаете, находится в библиотеке COM - либо по ProgID, либо по GUID, - и проверять наличие ошибок.

0 голосов
/ 02 апреля 2009

Попробуйте создать и обработать ошибку, если нет.

Под Win32 CoCreateInstance вернет REGDB_E_CLASSNOTREG, если не установлено (включая IIRC, если зарегистрировано, но dll / exe, реализующий его, затем удаляется).

В .NET сгенерированная сборка взаимодействия COM вызовет некоторую ошибку (нужно это проверить, у вас нет удобного кода для проверки, для какого типа исключения). Заметка. если сборка взаимодействия отсутствует, то она будет считаться отсутствующей сборкой, что может привести к ошибке загрузки приложения.

...