如何检查COM组件(EXE / DLL文件)是否已注册(使用.NET)?

如何使用.NET检查COM组件(EXE / DLL文件)是否已注册?

只需在注册表中查找即可。 HKEY_CLASSES_ROOT \ yourcom.component。

这取决于。 您的组件将注册到Windows注册表中,因此您需要确定要查看的配置单元。

如果您的组件安装了regasm,则可能会使用HKCU,因为它将从用户的命令行运行。 但是,如果您使用MSI,则MSI可能不会使用regasm,并且如果您在PER MACHINE模式(ALLUSERS =“1”)或作为管理员运行MSI,则可以将条目直接放入HKLM。 另一方面,如果您将MSI作为PER USER(ALLUSERS =“”)或非特权帐户运行,它将使用HKCU。

HKCR是HKLM和HKCU的合并视图,因此您无法分辨实际使用的是哪个配置单元,它可能无法提供您想要了解的内容。 MSDN HKEY_CLASSES_ROOT

如果您的COM组件已注册PER USER,则可能会失败,具体取决于哪个用户运行安装。 因此,如果您想检查它是否正确安装,您需要确定您实际想要使用的密钥,或HKCR是否可接受。 对于最终用户测试,HKCR可能是最安全的测试方式,因为每个人都可以访问它,并且(在.NET中)不会抛出安全exception。

另见这篇文章: regasm和HKCU

从Visual Studio,您可以从Reference Manager执行此操作。

  1. 转到解决方案资源管理器>参考
  2. 右键单击References
  3. 选择添加参考…
  4. 从菜单中选择COM项

这个工具的好处是你可以通过关键字搜索对象比在注册表中导航更优雅。 请注意,您也可以看到GAC中注册的非COM对象。