17

Question: I have a .NET dll which I use from a C++ program. Now I have to register the dll programmatically on a deployment computer.

How do I do that (programmatically! not using regasm)? I remember, when I once called a VB6 dll from a C++ dll, I had to use DllRegisterServer and DllUnregisterServer.

Is that still so with a .NET dll?
It seems I have to somehow add the dllregisterserver function to the .NET dll.

2 Answers 2

32

YUK, .NET dlls don't have DllRegisterServer, so you have to write a .NET installer, executing this somewhere:

Assembly asm = Assembly.LoadFile (@"c:\temp\ImageConverter.dll");
RegistrationServices regAsm = new RegistrationServices();
bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase);
Sign up to request clarification or add additional context in comments.

2 Comments

AFAIK it needs administrator rights. Not a big difference with calling regasm directly. But it works. +1
@Arnaud Bouchez: One big difference: You can put a try - catch around it, and handle errors. As with spawning a new process, it's also possible, but a lot more work.
1

Can you use process monitor to see what system changes (basically registry changes I think) are made when you use regasm.exe to register your dll, and then make those changes programatically instead?

1 Comment

Yes, that's the way to go with pure C/C++. Nice, but I think it might take time to figure out how to get the data to write there...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.