如何检查COM dll是否在C#中注册

Jay*_*Jay 11 c# com dll vsto regsvr32

我在VS 2008,C#,.NET 3.5和VSTO中创建了一个Office加载项.它通过ClickOnce部署.运行时配置表单执行regsvr32以注册由于ClickOnce限制而无法在安装期间注册的项目中包含的"fooapi.dll".是否有任何首选方法来检查并查看在C#中运行时是否注册了"fooapi.dll"?

Chr*_*ter 5

尝试使用Type.GetTypeFromCLSIDType.GetTypeFromProgID方法快速检查 COM 接口是否存在。

或者,只需实例化对象并捕获异常,例如

catch(COMException ex) {
    if(ex.ErrorCode == -2147221164) {
        // Retrieving the COM class factory for component with CLSID XXXX failed
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

null如果 COM 对象无法实例化,则此重载似乎是唯一实际返回的重载。

  • `Type.GetTypeFromCLSID` 的优点在于,无论 CLSID 是否有效,它总是返回 System.__ComObject (2认同)