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
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 DllRegisterServer
DllUnregisterServer
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.
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.
El enlace está roto. Por favor, proporcione un suplente. –
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/ –
Basta con ver el código fuente de regsvr32.exe
Estaba sorprendido de descubrir que este código fuente está realmente disponible con Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –
- 1. Problema registrar una DLL - Acceso denegado
- 2. No se puede registrar DLL usando WiX
- 3. En .NET, ¿hay una necesidad de registrar la DLL?
- 4. Cómo registrar una .NET DLL usando Inno Setup
- 5. ¿Qué registrar cuando ocurre una excepción?
- 6. ¿Qué significa "babosa" significa
- 7. ¿Qué significa ('../') significa?
- 8. ¿Qué significa Field.Index.NOT_ANALYZED_NO_NORMS significa
- 9. ¿Qué significa @ "../ .." en una ruta?
- 10. Windows 7: no puede registrar DLL - Código de error: 0x80004005
- 11. Problema al registrar ChilkatDotNet4.dll en el GAC
- 12. Registrar el archivo DLL en Windows Server 2008 R2
- 13. ¿Alguien sabe qué significa advapi?
- 14. ¿qué significa "$ &" significa en Ruby
- 15. ¿Qué significa "?" significa en Java?
- 16. ¿Qué significa xmlns = "" significa exactamente
- 17. ¿Qué significa _ITERATOR_DEBUG_LEVEL = 1?
- 18. ¿Qué significa '??' significa en C#?
- 19. ¿Qué significa "ruptura BC" significa?
- 20. ¿Qué significa = *?
- 21. ¿Qué significa "==="?
- 22. ¿Qué significa /([^.]*)\.(.*)/?
- 23. ¿Qué significa & Sign significa frente a una variable?
- 24. ¿Qué significa "|" significa en una línea de comando terminal?
- 25. ¿Qué significa "\\. \", "\ ?? \", "\\? \", "\\"?
- 26. ¿Qué significa || =?
- 27. Referencia a una DLL desde otra DLL
- 28. ¿Qué es el dll de interoperabilidad?
- 29. ¿Qué es un dll?
- 30. ¿Qué significa "rc" significa en archivos punto
Cuando creo un archivo DLL de ActiveX en Visual Basic 6 no tengo para implementar DllRegisterServer. – CJ7