proporcionar - regsvr32 windows 10
¿Qué hace el registro de una DLL? (3)
Sé cómo registrar dlls, pero nunca he estado realmente seguro de por qué lo hago o bajo qué condiciones debe registrarse un dll. ¿Alguien podría explicarme o señalarme alguna documentación?
Lo que comúnmente se conoce como registro DLL es cuando implementa un objeto COM. regsvr32 asegura que se puede crear una instancia del objeto. Cuando, por ejemplo, VBScript utiliza New o CreateObject (), el registro garantiza que COM sepa qué DLL cargar para crear una nueva instancia, ya sea por nombre o por CLSID.
Vea "la explicación del profano" para un (muy) breve resumen.
Simplemente mira el código fuente de regsvr32.exe
Cuando se registra una DLL, se invoca el punto de entrada del método DllRegisterServer
en su DLL. De forma similar, DllUnregisterServer
se invoca cuando una DLL no está registrada.
Como se describe en este artículo de MSDN :
Indica a un servidor en proceso que cree sus entradas de registro para todas las clases admitidas en este módulo de servidor. Si esta función falla, el estado del registro para todas sus clases es indeterminado.
Para las DLL COM, deberá implementar sus propios métodos de punto de entrada DllRegisterServer
y DllUnregisterServer
que realizan el registro / DllUnregisterServer
del registro según corresponda. El código de ejemplo para DllRegisterServer
se puede encontrar here .
El resultado final de registrar una DLL es que todos los CLSID para los componentes en la DLL están registrados en HKEY_CLASSES_ROOT/CLSID
. Esto permite que CoCreateInstance
encuentre el servidor correcto al crear instancias de objetos COM desde otra DLL o aplicación.
DllUnregisterServer
hará lo contrario y eliminará todos los CLSID del registro que DllRegisterServer
puso allí.
Puede encontrar más información general sobre DllRegisterServer
here .