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

6

在C#中,是否有一种编程方式可以确定特定的COM DLL是否已安装?或者这是扫描类ID的注册表的问题?

2个回答

4

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


应该比注册表扫描更加健壮,而且能够检测到错误的安装。不过这取决于加载DLL或创建对象是否昂贵。 - Pontus Gagge
好的。最好尝试从库中使用“合适”的类。我猜如果你不打算至少使用库中的某些内容,那么就没有必要检查是否安装了COM库,因此加载它以检查安装通常不是问题... - peSHIr

0

尝试创建它,并在无法创建时处理错误。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接