代码之家  ›  专栏  ›  技术社区  ›  dthrasher

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

  •  6
  • dthrasher  · 技术社区  · 15 年前

    C中是否有程序化的方法来确定是否安装了特定的COM DLL?或者这是在注册表中扫描ClassID的问题?

    2 回复  |  直到 9 年前
        1
  •  4
  •   peSHIr    15 年前

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

        2
  •  0
  •   Richard    9 年前

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

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

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