2010-03-04 19 views
18

Soru: Bir C++ programından kullandığım bir .NET dll var. Şimdi dll'yi programlı bir bilgisayara kaydetmeliyim.Bir C#/VB.NET COM dll program aracılığıyla kaydetme

Bunu nasıl yaparım (programlı olarak! Regasm kullanmıyoruz)? Hatırlıyorum, bir kez bir C++ dll bir VB6 dll çağrıldığında, DllRegisterServer ve DllUnregisterServer kullanmak zorunda kaldı.

Bu hala bir .NET dll ile mi?
Bir şekilde dllregisterserver işlevini .NET dll dosyasına eklemem gerekiyor.

cevap

28

YUK, .NET DLL Bunu biryere yürütülmesi, DllRegisterServer'ın yok:

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

AFAIK o yönetici haklarına ihtiyacı var. Doğrudan regasm ile çağrı büyük bir fark değil. Ama işe yarıyor. +1 –

+2

@Arnaud Bouchez: Büyük bir fark var: Denemeyi deneyebilir ve hataları halledebilirsiniz. Yeni bir sürecin ortaya çıkmasıyla olduğu gibi, bu da mümkündür, ancak çok daha fazla iş. –

1

process monitor, sisteminizi kaydetmek için regasm.exe'u kullandığınızda hangi sistem değişikliklerini (temelde kayıt defteri değişiklikleri olduğunu) görmek için kullanabilir ve sonra bu değişiklikleri programlı olarak yerine getirebilir misiniz? Bir .NET yükleyici yazmak zorunda

+0

Evet, bu saf C/C++ ile gitmek için bir yoldur. Güzel, ama veri almak için veri almak için zaman alacağını düşünüyorum düşünüyorum ... –

İlgili konular