2010-03-04 75 views
18

问题:我有一个.NET dll,我使用的是C++程序。 现在我必须在部署计算机上以编程方式注册dll。以编程方式注册C#/ VB.NET COM dll

我该怎么做(以编程方式!不使用regasm)? 我记得,当我曾经从C++ dll调用VB6 dll时,我不得不使用DllRegisterServer和DllUnregisterServer。

这对.NET dll还是如此吗?
看来我必须以某种方式将dllregisterserver函数添加到.NET dll。

回答

28

秀,.NET的DLL没有的DllRegisterServer,所以你必须写一个.NET安装程序,执行这个地方:

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

AFAIK它需要管理员权限。直接调用'regasm'没有太大区别。但它的工作。 +1 – 2014-02-06 06:05:21

+2

@Arnaud Bouchez:一个很大的区别:你可以尝试一下 - 抓住它并处理错误。正如产卵新过程一样,这也是可能的,但是还有很多工作要做。 – 2014-02-06 14:36:50

1

您可以使用process monitor来查看当您使用regasm.exe注册您的dll时做出什么系统更改(基本上是注册表更改),然后以编程方式更改这些更改?

+0

没错,就是去与纯C/C++的方式。不错,但我认为可能需要时间来弄清楚如何让数据写入那里... – 2010-03-05 07:44:26