是否有 .NET 或 Win32 版本的 regsvr32?我想用代码注册一个 COM DLL,而不是向 regsvr32 程序注册。
问问题
657 次
3 回答
5
注册程序集的标准方法是在程序集上调用导出的DllRegisterServer
函数。
简而言之,regsvr32 基本上执行以下操作(为简洁起见,省略了错误检查)。
HANDLE lib = LoadLibrary(...);
FARPROC proc = GetProcAddress(lib, "DllRegisterServer");
proc();
于 2010-08-24T17:44:26.337 回答
1
是的,它只需要调用导出的函数。魔鬼在细节中。DLL 也将加载其所有隐式链接的依赖 DLL。他们的 DllMain() 入口点将运行。这在像 regsvr32 这样的简单过程中还可以,但在您需要在注册步骤之后继续存在的过程中就不太好。
然后获得写入注册表的权限。UAC 肯定会阻止这种情况,无论是运行 Regsvr32 还是直接调用入口点。要获得用户的许可,您需要一个单独的 EXE,其中包含要求管理员权限的清单。你没有领先。
查看无注册 COM,在清单中提供注册信息。这样您就不必再注册 DLL。如果你搜索这个词,你会得到很多点击。
于 2010-08-24T17:58:39.853 回答
0
我相信您只需加载 DLL,然后将其称为导出DllRegisterServer()
函数。
于 2010-08-24T17:44:55.683 回答