Что является эквивалентным членом в .NET Framework для вызова RegSvr32.exe и RegAsm.exe? [Дубликат]

Чтобы использовать методы и член объекта, вам сначала нужно создать этот объект. Если вы его не создали (переменная, которая должна содержать объект, не инициализируется), но вы пытаетесь использовать его методы или переменные, вы получите эту ошибку.

Иногда вы можете просто забыть инициализировать .

Отредактировано: new не может вернуть значение null, но исключение огня при ошибке. Давно это было на некоторых языках, но не больше. Спасибо @John Saunders за указание на это.

1
задан Jonathan Allen 24 August 2010 в 18:39
поделиться

3 ответа

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

В упрощенных терминах regsvr32 по существу делает следующее (для краткости ошибки проверки опущены).

HANDLE lib = LoadLibrary(...);
FARPROC proc = GetProcAddress(lib, "DllRegisterServer");
proc();
5
ответ дан JaredPar 27 August 2018 в 23:27
поделиться

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

Затем есть права на запись в реестр. UAC определенно остановит это, как для запуска Regsvr32, так и для вызова точки входа напрямую. Чтобы получить разрешение от пользователя, вам понадобится отдельный EXE с манифестом, который запрашивает права администратора. Вы не вперёд.

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

1
ответ дан Hans Passant 27 August 2018 в 23:27
поделиться

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

0
ответ дан James Curran 27 August 2018 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: