2011-06-25 9 views
5

Tengo un problema intentando registrar la DLL. Mi sistema operativo es Windows 7 (x64).regsvr32 no crea ninguna entrada en el registro

que lo hacen de dos maneras diferentes:

1) El uso de regsvr32. Recibo el mensaje "DllRegisterServer ... succeedeed", sin embargo, no puedo encontrar mi CLSID en el registro. (Y obtengo el error "Class not registered" tratando de crear un instace de componente con este CLSID). En este caso, sé que nunca se llama a DllRegisterServer (porque creo un archivo de texto al principio de esta función y no es creado).

2) Cargue explícitamente mi DLL y llame a DllRegisterServer. En este caso, DllRegisterServer devuelve S_OK, pero aún no puedo encontrar mi CLSID en el registro y obtener el error "Clase no registrada".

Estoy seguro de que el código es correcto (ya que no solo funciona en mi sistema operativo), por lo que parece que el problema está en el sistema operativo. ¿Alguien se enfrenta a tal problema?

Respuesta

1

http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx debería explicarlo

Dependiendo de si el archivo DLL es 32 o 64 bits de las claves de registro se crean en lugares separados

+0

Mi DLL es de 32 bits y yo se espera que la clave de registro se cree en HKEY_CLASSES_ROOT \ CLSID. Sin embargo, busqué en el registro completo y no está allí. – skvadrik

+2

¿Has leído el enlace que publiqué? Pruebe la clave HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID –

+0

También es su aplicación de llamadas también de 32 bits. Una aplicación nativa de 32 bits solo puede cargar dlls de 32 bits y lo mismo con 64bit –

0

acabamos de resolver un problema idéntico. He agregado manualmente a la nueva interfaz COM de 32 bits existente, la implementación (MyNewClass) y el archivo rgs. Pero cuando he registrado mi COM con éxito usando SysWow64 \ regsvr32.exe noté que mi ProgId/CLSID no apareció en HKCR \ CLSID o HKCR \ Wow6432Node \ CLSID

Así que, de hecho, me perdí algunas cosas:

  1. he tenido que añadir OBJECT_ENTRY bajo BEGIN_OBJECT_MAP en MyApp.cpp presentar
  2. y añadir DECLARE_REGISTRY_RESOURCEID (IDR_xxx) a MyNewClass.h archivo

resource.h

definen IDR_xxx 105

ExistingCom.rc

IDR_xxx REGISTRO descartable "MyNewClass.rgs" herramienta de línea de comandos

0

Ejecutar como administrador y ejecute el comando regsvr32 registro

Cuestiones relacionadas