¿Es posible usar el objeto COM desde DLL sin registro en C++ código no administrado?Usar el objeto COM desde DLL sin registro
Respuesta
Sí, si no se basa internamente en otros objetos registrados.
- Usted
LoadLibrary
la DLL - Usted
GetProcAddress
suDllGetClassObject
- Usted llama
DllGetClassObject
obtenerIClassFactory
puntero paraCLSID
de interés - Eres bueno para ir con
IClassFactory::CreateInstance
y una instancia del coclase
2 ½. Asegúrate de estar en el apartamento correcto antes de llamar a 'DllGetClassObject'. Aun así, no obtendrá referencias para las interfaces de modelos de objetos específicos. Incluso si los objetos COM C++ implementan 'IMarshal' o' IProvideClassInfo' ellos mismos, tendrá que hacer lo mismo si usted es el que proporciona objetos que implementan cualquiera de esas interfaces (por ejemplo, interfaces de eventos). Por estas y muchas otras razones, esta es una mala práctica. En su lugar, debe usar COM libre de registro. – acelent
Puede crear archivos de manifiesto para la DLL y usar Registration-Free COM.
Digamos que la DLL COM debe registrarse, pero la aplicación no tiene derechos de acceso de administrador. He aquí un truco fácil de registrar la DLL bajo HKEY_CURRENT_USER
, que no requiere derechos de administrador:
- Uso
LoadLibrary
para cargar la DLL COM. - Llame al
GetGetProcAddress
para obtener la dirección deDllRegisterServer
. - Llame al
RegOverridePredefKey
para realizar las redirecciones de registro temporales:HKEY_LOCAL_MACHINE
aHKEY_CURRENT_USER
yHKEY_CLASSES_ROOT
aHKEY_CURRENT_USER\Software\Classes
. - Llamada
DllRegisterServer
obtenida en el paso 2. - Invierta los redireccionamientos de registro.
- Utilice el servidor COM como de costumbre, ahora está registrado en
HKEY_CURRENT_USER
.
"fácil" hackear. Inteligente sin embargo. – Dmitry
- 1. Crear objeto COM desde archivo sin regsvr32
- 2. Registro Com y dll manifiestos
- 3. C# usar una DLL legado simplemente sin registro (regsvr32)
- 4. El registro de un DLL COM NET durante Wix Instalar
- 5. Registro de un objeto COM creado con VS C# 2010
- 6. registrando com dll en wix
- 7. ¿Cómo registro una DLL COM escrita en C# con Regsvr32?
- 8. Cómo usar COM dll en mi programa C++
- 9. Eliminar el registro DLL usando regsvr32
- 10. Cómo funciona el registro COM en Windows
- 11. Ensamblados dependientes y de interoperabilidad COM sin registro
- 12. ¿Usar DLL en PHP?
- 13. ¿Es posible usar clases COM visibles de .NET con registro de COM libre?
- 14. El objeto COM que se ha separado de su RCW subyacente no se puede usar
- 15. COM Registro de interoperabilidad
- 16. ¿Por qué no se puede usar el objeto COM IDisposable?
- 17. C# COM DLL: ¿uso Regasm o Regsvr32?
- 18. Tlbexp.exe en un DLL COM
- 19. Registre ensamblados administrados con COM sin usar el GAC
- 20. ¿Algún buen tutorial sobre cómo usar COM desde C#?
- 21. Cómo enlazar tardíamente el evento COM sin interfaz
- 22. Usar DLL en C sin lib
- 23. Métodos de llamada C# de C++ sin usar COM
- 24. ¿Rieles cómo tocar el objeto de registro activo sin bloquear?
- 25. ¿Es posible la activación sin registro para servidores COM EXE (fuera de proceso)?
- 26. La diferencia entre DLL tradicional y COM DLL
- 27. ¿Qué es "mejor": DLL COM o DLL estándar con Typelib?
- 28. Cómo obtener el tipo de objeto COM
- 29. ¿Cómo usar el ensamblado .Net de Win32 sin registro?
- 30. RegFree COM trabajando desde C#, NO trabajando desde VBA
@NahumLitvin, ¿puedes decir en qué biblioteca estás interesado específicamente? – acelent
Desafortunadamente no puedo. la información no es mía para dar. Tengo un com dll. y un ejemplo de trabajo con registro. pero no puedo usar el registro. – Nahum
¿Por qué no hiciste una nueva pregunta? ¿Por qué no puedes usar COM libre de registro (ver una de las respuestas)? ¿Has probado el método explicado en la otra respuesta? Si no funcionó, ¿en qué paso obtuviste un error? Realmente, esto no reserva una recompensa en una pregunta ya respondida, esta debería ser su propia pregunta. Debe proporcionar muchos más detalles si realmente desea ayuda, en lugar de solo arrojar puntos de reputación. – acelent