2009-04-02 3 views

ответ

4

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

+0

Должно быть более надежным, чем сканирование реестра, а также обнаружение плохой установки. Тем не менее, зависит от того, стоит ли загружать DLL или создавать объект. –

+0

Справа. Вероятно, лучше всего попробовать и использовать «подходящий» класс из библиотеки. И я предполагаю, что нет необходимости проверять, установлена ​​ли библиотека COM, если вы не планируете делать что-то с библиотекой, поэтому загрузка ее для проверки на установку обычно не проблема ... – peSHIr

0

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

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

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

Смежные вопросы