读取.NET库是否已注册COM

时间:2017-07-18 12:07:13

标签: .net command-line com-interop regasm

我有一个要为COM Interop注册的库:

%Windir%\Microsoft.NET\Framework\<version>\regasm MyTest.dll
%Windir%\Microsoft.NET\Framework64\<version>\regasm MyTest.dll

在此之前,我只想知道库是否已经注册COM Interop,而不更改系统配置。 我该怎么办?另外,我想知道是否已经为COM Interop注册了同一个库(更新版本和更旧版本)的其他版本。

官方regasm手册页现在显示任何只会输出库是否已注册的参数。

1 个答案:

答案 0 :(得分:1)

您可以通过编程方式检查注册表(例如,任何COM服务器,而不仅仅是.NET),例如,这是在名为“net2.dll”的程序集中为名为net2.Class1的类生成regasm的内容,在/ codebase参数中注册:

enter image description here

对于非.NET COM服务器,重要的部分是HKCR\CLSID\<your CLSID>\InprocServer32 key的默认值,它指向公开函数以创建声明的COM对象的dll。

对于.NET类,此值必须设置为mscoree.dll(这是所有.NET安装的一部分),然后重要的是键AssemblyClass

注意我在C#代码中提供了一个等效的RegAsm示例:Registering a COM without Admin rights,您也可以反过来使用它来确定哪些是重要的键。