Подтвердить что ты не робот

Что делает регистрация DLL?

Я знаю, как регистрировать DLL, но я никогда не был уверен, почему я это делаю или при каких условиях должна быть зарегистрирована dll. Может кто-нибудь объяснить или указать мне на документацию?

4b9b3361

Ответ 1

Когда DLL зарегистрирована, вызывается точка входа метода DllRegisterServer в вашей DLL. Аналогично, DllUnregisterServer вызывается, когда DLL незарегистрирована.

Как описано в этой статье MSDN:

Поручает встроенному серверу создавать записи реестра для всех классы, поддерживаемые на этом сервере модуль. Если эта функция не работает, состояние реестра для всех его классы неопределены.

Для COM-библиотек вам нужно будет реализовать собственные методы точки входа DllRegisterServer и DllUnregisterServer, которые при необходимости регистрируют/отменяют регистрацию. Пример кода для DllRegisterServer можно найти здесь.

Конечным результатом регистрации DLL является то, что все CLSID для компонентов в DLL зарегистрированы в HKEY_CLASSES_ROOT\CLSID. Это позволяет CoCreateInstance находить правильный сервер при создании объектов COM из другой DLL или приложения.

DllUnregisterServer выполнит обратное и удалит все CLSID из реестра, которые были помещены туда DllRegisterServer.

Более общую информацию о DllRegisterServer можно найти здесь.

Ответ 2

То, что чаще всего называют регистрацией DLL, - это когда он реализует COM-объект. regsvr32 гарантирует, что экземпляр объекта может быть создан. Когда, например, VBScript использует New или CreateObject(), регистрация гарантирует, что COM знает, какую DLL загружать, чтобы создать новый экземпляр, будь то по имени или CLSID.

См. "объяснение непрофессионала" для (очень) краткого резюме.

Ответ 3

Просто посмотрите исходный код regsvr32.exe