2009-03-06 18 views
51

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?¿Qué significa registrar una DLL?

Respuesta

40

Cuando se registra una DLL, se invoca el punto de entrada del método DllRegisterServer en su DLL. De forma similar, se invoca DllUnregisterServer cuando un archivo DLL no está registrado.

como se describe en this MSDN article:

Encarga a un servidor en proceso de crear sus entradas de registro para todas las clases apoyados en este módulo de servidor . Si esta función falla, el estado del registro para todas sus clases es indeterminado.

para COM DLL, tendrá que aplicar sus propios métodos y DllRegisterServerDllUnregisterServer punto de entrada que hacen el registro/anular el 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 bajo 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 se pusieron allí por DllRegisterServer.

Más información general sobre DllRegisterServer se puede encontrar here.

+0

Cuando creo un archivo DLL de ActiveX en Visual Basic 6 no tengo para implementar DllRegisterServer. – CJ7

6

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 v.g. 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.

Ver "the layman's explanation" para un (muy) breve resumen.

+0

El enlace está roto. Por favor, proporcione un suplente. –

+1

Hecho. También archivado como https://web.archive.org/web/20170222094351/https://chewychong.wordpress.com/2004/08/23/layman-s-explanation-of-regscvs-regasm-regsvr32/ –

2

Basta con ver el código fuente de regsvr32.exe

+4

Estaba sorprendido de descubrir que este código fuente está realmente disponible con Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –