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

C# 如何检查COM组件(EXE/DLL文件)是否已注册(使用.NET)?,c#,.net,com,C#,.net,Com,如何检查COM组件(EXE/DLL文件)是否已注册或未使用.NET?只需在注册表中查找即可。HKEY\u CLASSES\u ROOT\yourcom.component.视情况而定。您的组件将注册到Windows注册表中,因此您需要确定要在哪个配置单元中查找 如果您的组件安装了regasm,则可能会使用HKCU,因为它将从用户的命令行运行。但是,如果您使用MSI,MSI可能不会使用regasm,如果您以每台机器模式(ALLUSERS=“1”)或管理员身份运行MSI,则MSI可能会将条目直接放入

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

只需在注册表中查找即可。HKEY\u CLASSES\u ROOT\yourcom.component.

视情况而定。您的组件将注册到Windows注册表中,因此您需要确定要在哪个配置单元中查找

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

HKCR是HKLM和HKCU的合并视图,所以您无法判断实际使用的是哪个蜂巢,它可能无法提供您想要知道的信息

如果COM组件是按用户注册的,则它可能会失败,具体取决于运行安装的用户。所以,如果你想检查它是否安装正确,你需要弄清楚你真正想要使用的密钥,或者HKCR是否可以接受。对于最终用户测试,HKCR可能是最安全的测试方式,因为它将被所有人访问,并且(在.NET中)不会引发安全异常


另请参阅本文:

从VisualStudio,您可以从参考管理器执行此操作

  • 转到解决方案资源管理器>参考
  • 右键单击引用
  • 选择添加引用
  • 从菜单中选择COM项

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

    它没有回答有关编程检查的问题。您知道,其他答案在技术上也都不是编程的。否决票真是太好了。下面是一个使用C#的例子: