我有一个要为COM Interop注册的库:
%Windir%\Microsoft.NET\Framework\<version>\regasm MyTest.dll
%Windir%\Microsoft.NET\Framework64\<version>\regasm MyTest.dll
在此之前,我只想知道库是否已经注册COM Interop,而不更改系统配置。 我该怎么办?另外,我想知道是否已经为COM Interop注册了同一个库(更新版本和更旧版本)的其他版本。
官方regasm手册页现在显示任何只会输出库是否已注册的参数。
答案 0 :(得分:1)
您可以通过编程方式检查注册表(例如,任何COM服务器,而不仅仅是.NET),例如,这是在名为“net2.dll”的程序集中为名为net2.Class1
的类生成regasm的内容,在/ codebase参数中注册:
对于非.NET COM服务器,重要的部分是HKCR\CLSID\<your CLSID>\InprocServer32 key
的默认值,它指向公开函数以创建声明的COM对象的dll。
对于.NET类,此值必须设置为mscoree.dll
(这是所有.NET安装的一部分),然后重要的是键Assembly
和Class
注意我在C#代码中提供了一个等效的RegAsm示例:Registering a COM without Admin rights,您也可以反过来使用它来确定哪些是重要的键。