以编程方式注册C#/VB.NET COM dll

17
问题:我有一个.NET dll,我从C++程序中使用它。现在我需要在部署计算机上以编程方式注册dll。
如何实现(以编程方式!不使用regasm)? 我记得曾经从C++ dll调用VB6 dll时,我必须使用DllRegisterServer和DllUnregisterServer。
对于.NET dll是否仍然如此? 似乎我需要将dllregisterserver函数添加到.NET dll中。
2个回答

31

哎呀,.NET dll 没有 DllRegisterServer 函数,所以你需要编写一个 .NET 安装程序,在某处执行以下代码:

Assembly asm = Assembly.LoadFile (@"c:\temp\ImageConverter.dll");
RegistrationServices regAsm = new RegistrationServices();
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);

1
据我所知,它需要管理员权限。与直接调用 regasm 相比没有太大区别。但它能正常工作。+1 - Arnaud Bouchez
3
一个重要的区别是:你可以在其周围加上try-catch语句,以便处理错误。虽然生成一个新进程也是可能的,但需要更多的工作。 - Stefan Steiger

1

你能否使用进程监视器来查看当你使用regasm.exe注册你的dll时所做的系统更改(基本上是注册表更改),然后以编程方式进行这些更改呢?


是的,这是使用纯C/C++的方式。不错,但我认为可能需要时间来弄清楚如何获取数据以写入那里... - Stefan Steiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接