C#中是否有编程方式来确定是否已安装特定的COM DLL?或者这是扫描注册表中的classId?
答案 0 :(得分:4)
我通常做的(如果我再次需要这样做的话)会尝试创建一个你知道在COM库中的类的对象实例 - 通过ProgID或GUID - 并检查失败。
答案 1 :(得分:0)
尝试创建它,如果没有,则处理错误。
在Win32下CoCreateInstance
将返回REGDB_E_CLASSNOTREG
如果没有安装(包括IIRC,如果已注册,但实现它的dll / exe随后被删除)。
在.NET下,生成的COM互操作程序集会抛出一些错误(需要检查一下,没有方便的代码来测试哪种异常类型)。注意。如果缺少互操作程序集,则会将其视为缺少程序集,可能导致应用程序加载错误。