Существует ли версия regsvr32 для .NET или Win32? - PullRequest
1 голос
/ 24 августа 2010

Существует ли версия regsvr32 для .NET или Win32? Я хотел бы зарегистрировать COM DLL с кодом вместо того, чтобы выдавать ее программе regsvr32.

Ответы [ 3 ]

5 голосов
/ 24 августа 2010

Стандартный способ регистрации сборки - вызов экспортированной функции DllRegisterServer для сборки.

В упрощенном виде regsvr32 по существу делает следующее (проверка краткости не включена).

HANDLE lib = LoadLibrary(...);
FARPROC proc = GetProcAddress(lib, "DllRegisterServer");
proc();
1 голос
/ 24 августа 2010

Да, просто требуется вызвать экспортированную функцию.Дьявол кроется в деталях.DLL также загрузит все свои неявно связанные зависимые DLL.И их точки входа DllMain () будут работать.Это нормально в таком простом процессе, как regsvr32, не так хорошо в вашем, который должен выжить после шага регистрации.

Тогда есть разрешения на запись в реестр.UAC определенно положит этому конец как для запуска Regsvr32, так и для непосредственного вызова точки входа.Для получения разрешения от пользователя вам понадобится отдельный EXE-файл с манифестом, который запрашивает права администратора.Вы не впереди.

Посмотрите на reg-free COM, предоставив регистрационную информацию в манифесте.Тогда вам больше не придется регистрировать DLL.Вы получите много хитов, если будете искать по термину.

0 голосов
/ 24 августа 2010

Полагаю, вы просто загружаете DLL, а затем вызываете экспортированную DllRegisterServer() функцию.

...