Есть ли в С# программный способ определить, установлена ли конкретная DLL COM? Или это вопрос сканирования реестра для classId?
Программно определить, установлена ли библиотека COM (.DLL)
Ответы (2)
Что я обычно делал (и сделал бы, если бы мне это снова понадобилось), так это попытался создать экземпляр объекта класса, который, как вы знаете, находится в библиотеке COM - либо по ProgID, либо по GUID - и проверил на наличие ошибки.
Попробуйте создать его и обработайте ошибку, если нет.
В Win32 CoCreateInstance
вернет REGDB_E_CLASSNOTREG
, если он не установлен (включая IIRC, если он зарегистрирован, но реализующая его dll/exe затем удаляется).
В .NET сгенерированная сборка COM-взаимодействия выдаст некоторую ошибку (необходимо проверить это, у вас нет удобного кода для проверки того, какой тип исключения). Примечание. если сборка взаимодействия отсутствует, это будет рассматриваться как отсутствующая сборка, что может привести к ошибке загрузки приложения.