Pregunta

Estoy intentando registrar un archivo DLL COM en Windows Server 2008 R2. Estos son los pasos que di:

  1. Ejecutar como administrador cmd
  2. c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll

Cuando ejecuto ese comando consigo este error:

El módulo de temp12.dll no se pudo cargar. Asegúrese de que el binario se almacena en la ruta especificada o el debut para comprobar si hay problemas con los archivos binarios .DLL o dependientes. El módulo especificado no se pudo encontrar.

I fue capaz de registrar el mismo archivo DLL en Windows 2000.

También probé

c:\windows\syswow64\regsvr32 "c:\tempdl\temp12.dll"

Y tengo este error:

c:\tempdl\temp12.dll el módulo fue cargado pero la llamada a DllRegisterServer falló con el código de error 0x80040154. Para obtener más información acerca de este problema, buscar en línea utilizando el código de error como término de búsqueda

¿Fue útil?

Solución

Ese es el error que se obtiene cuando el DLL propio requiere otro servidor COM que se registró por primera vez o tiene una dependencia de otra DLL que no está disponible. La herramienta Regsvr32.exe hace muy poco, se llama a LoadLibrary () para cargar el archivo DLL que se pasa en el argumento de la línea de comandos. Entonces GetProcAddress () para encontrar el punto de entrada DllRegisterServer () en el archivo DLL. Y lo llama a dejarlo hasta el servidor COM registrarse a sí mismo.

Lo que que hace código es bastante imposible de adivinar. sin embargo, el diagnóstico de lo que tienes es bastante evidente por sí mismo a partir del código de error, por alguna razón este servidor COM necesita otro para ser registrado por primera vez. El mensaje de error es horrible, que no le dice lo otro servidor que necesita. Una triste efecto secundario del error COM manera el manejo de las obras.

Para solucionar este problema, la herramienta ProcMon uso SysInternals'. Se le muestra qué registro de teclas Regsvr32.exe (en realidad: el servidor COM) está abriendo para encontrar el servidor. Busque accesos a la clave CLSID. Eso le da una pista de lo {GUID} que está buscando. Que todavía no acaba de decirle la DLL de servidor, se debe comparar con la traza que se obtiene a partir de una máquina que funciona. La clave InprocServer32 tiene la ruta DLL.

Otros consejos

Es posible que necesite registrar este DLL utilizando la versión de 32 bits de regsvr32.exe:

c:\windows\syswow64\regsvr32 c:\tempdl\temp12.dll

Error 0x80040154 es REGDB_E_CLASSNOTREG de COM, que significa "Clase no registrada". Básicamente, una clase COM no se ha declarado en el registro de instalación.

Si recibe este error al intentar registrar una DLL, puede ser posible que el código de registro de esta DLL está tratando de crear una instancia de otro servidor COM (DLL o EXE), que se encuentra o no está registrado en esta instalación.

Si usted no tiene acceso a la fuente original DLL, sugeriría el uso de Sysinternal monitor de procesos para realizar un seguimiento de las búsquedas de registro COM (hay uso para ser una herramienta RegMon más simple, pero puede que no funcione más).

Se debe poner un filtro en el proceso de trabajo (aquí: Regsvr32.exe) para la captura solamente lo que es interesante. A continuación, usted debe buscar las consultas en HKEY_CLASSES_ROOT \ [a progid , una cadena] que falle (con la error NAME_NOT_FOUND por ejemplo), o consultas en HKEY_CLASSES_ROOT \ CLSID \ [a GUID] que falle.

PD: Por desgracia, puede haber muchas cosas que parecen fallar en un sistema Windows perfecto estado de funcionamiento, por lo que tendrá que estudiar cuidadosamente todos los errores. Buena suerte: -)

He encontrado problema similar al registrar mi ActiveX (OCX) en el servidor Windows 2008 R2.To resolver esto he utilizado http://www.chestysoft.com/dllregsvr/default.asp tool.There algún problema con mi dependencia OCX lo cual estoy aprendiendo" el temp12.dll módulo defectuoso a la carga. Asegúrese de que el binario se almacena en la ruta especificada o el debut para comprobar si hay problemas con los archivos binarios o .DLL dependientes. el módulo especificado no se pudo encontrar" mensaje de error. Cuando intenta registrar su OCX con esta herramienta será mensaje de solicitud si el OCX está teniendo la dependencia o se obtendrá message.I éxito consiguió mensaje para MFC70.DLL y Msvcr70.dll dependency.so i pegar estos DLL en la carpeta system32 de C : \ windows y sus done.After que puedo registrar el OCX sucessfully.I utiliza la versión de 32 bits de la herramienta Chestysoft (dllregsvr.exe) en el servidor windows 2008 R2 de 64 bits de la máquina.

Es posible que tenga que instalar ATL si su uso de los objetos COM ATL, tal como se describe en este artículo KB:

http://support.microsoft.com/kb/201191

Estas bibliotecas probablemente tendrá que ser suministrado por los desarrolladores para garantizar la versión correcta.

Esto es lo que tiene que ocurrir.

Hay que copiar el archivo DLL que desea registrar a: c: \ windows \ SysWOW64 \

A continuación, en el cuadro de diálogo Ejecutar, escriba esto en: C:\Windows\SysWOW64\regsvr32.exe c:\windows\system32\YourDLL.dll

y obtendrá el mensaje:

DllRegisterServer en c:. \ Windows \ system32 \ YourDLL.dll logrado

Se necesita la ruta completa a la regsvr32% windir manera $ \ system32 \ regsvr32 <*. Dll>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top