是否有regsvr32的.NET或Win32版本?

时间:2010-08-24 17:39:46

标签: .net installation regsvr32

是否有regsvr32的.NET或Win32版本?我想用代码注册一个COM DLL而不是shells到regsvr32程序。

3 个答案:

答案 0 :(得分:5)

注册程序集的标准方法是在程序集上调用导出的DllRegisterServer函数。

简单来说,regsvr32基本上执行以下操作(为简洁起见,省略了错误检查)。

HANDLE lib = LoadLibrary(...);
FARPROC proc = GetProcAddress(lib, "DllRegisterServer");
proc();

答案 1 :(得分:1)

是的,它只需要调用导出的函数。然而,魔鬼在细节中。 DLL也将加载其所有隐式链接的依赖DLL。他们的DllMain()入口点将运行。在像regsvr32这样的简单过程中,这有点好,在您的注册步骤之外需要存活的不是那么好。

然后获得写入注册表的权限。 UAC肯定会停止运行Regsvr32以及直接调用入口点。要获得用户的许可,您需要一个单独的EXE,其中包含要求管理员权限的清单。你没有领先。

查看免注册COM,在清单中提供注册信息。然后,您将不再需要注册DLL。如果你搜索这个词,你会得到很多点击。

答案 2 :(得分:0)

我相信您只需加载DLL,然后将其称为导出的DllRegisterServer()函数。