以编程方式确定是否安装了COM库(.DLL)

时间:2009-04-02 14:46:30

标签: c# com dll install

C#中是否有编程方式来确定是否已安装特定的COM DLL?或者这是扫描注册表中的classId?

2 个答案:

答案 0 :(得分:4)

我通常做的(如果我再次需要这样做的话)会尝试创建一个你知道在COM库中的类的对象实例 - 通过ProgID或GUID - 并检查失败。

答案 1 :(得分:0)

尝试创建它,如果没有,则处理错误。

在Win32下CoCreateInstance将返回REGDB_E_CLASSNOTREG如果没有安装(包括IIRC,如果已注册,但实现它的dll / exe随后被删除)。

在.NET下,生成的COM互操作程序集会抛出一些错误(需要检查一下,没有方便的代码来测试哪种异常类型)。注意。如果缺少互操作程序集,则会将其视为缺少程序集,可能导致应用程序加载错误。