是否有regsvr32的.NET或Win32版本?我想用代码注册一个COM DLL而不是shells到regsvr32程序。
答案 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()
函数。