说我有大量的COM类型,我想检查是否已经注册了特定类型。我可以使用Activator.CreateInstance来实际尝试创建类,但我想知道是否有更简单的方法实际检查是否实际注册了类。
我不想直接进入注册表 - 我正在寻找易于使用的东西,比如上面的Activator.CreateInstance调用。
由于
答案 0 :(得分:1)
NB。 Activator.CreateInstance
不直接创建COM类实例,它需要生成和安装互操作程序集(例如tlbimp.exe
) - 但这没有区别。
在不读取注册表的情况下检查的最简单方法是尝试创建实例并捕获由于类型不可用而导致的可能异常。 (例如COMException
如果基础组件安装不正确,TypeLoadException
(IIRC)如果缺少互操作程序集。)