instalar - Registrar archivo DLL en Windows Server 2008 R2
windows server versions (8)
Estoy tratando de registrar un archivo DLL COM en Windows Server 2008 R2. Estos son los pasos que tomé:
- Ejecute
cmd
como administrador -
c:/windows/system32/regsvr32.exe c:/tempdl/temp12.dll
Cuando ejecuto ese comando obtengo este error:
El módulo
temp12.dll
no se pudo cargar. Asegúrese de que el binario esté almacenado en la ruta especificada o déjelo en primer lugar para verificar si hay problemas con los archivos.DLL
binarios o dependientes. El módulo especificado no se pudo encontrar.
Pude registrar el mismo archivo DLL en Windows 2000.
También intenté
c:/windows/syswow64/regsvr32 "c:/tempdl/temp12.dll"
Y obtuve este error:
el módulo
c:/tempdl/temp12.dll
se cargó pero la llamada aDllRegisterServer
falló con el código de error0x80040154
. Para obtener más información sobre este problema, busque en línea usando el código de error como el término de búsqueda
El error 0x80040154 es REGDB_E_CLASSNOTREG de COM, que significa "Clase no registrada". Básicamente, una clase COM no está declarada en el registro de instalación.
Si obtiene este error al intentar registrar una DLL, es posible que el código de registro para esta DLL intente crear una instancia de otro servidor COM (DLL o EXE) que falta o no está registrado en esta instalación.
Si no tiene acceso a la fuente original de DLL, le sugiero que use la herramienta Monitor de procesos de SysInternal para rastrear las búsquedas de registro COM (solía haber una herramienta RegMon más simple, pero puede que ya no funcione).
Debería poner un filtro en el proceso de trabajo (aquí: Regsvr32.exe) para capturar solo lo que es interesante. A continuación, debe buscar consultas en HKEY_CLASSES_ROOT / [a progid , una cadena] que fallan (con el error NAME_NOT_FOUND por ejemplo) o consultas en HKEY_CLASSES_ROOT / CLSID / [a guid] que fallan.
PD: Desafortunadamente, puede haber muchas cosas que parecen fallar en un sistema Windows que funciona perfectamente, por lo que tendrá que estudiar todos los errores cuidadosamente. Buena suerte :-)
Es posible que deba registrar esta DLL con la versión de 32 bit de regsvr32.exe
:
c:/windows/syswow64/regsvr32 c:/tempdl/temp12.dll
Es posible que necesite instalar ATL si sus objetos COM utilizan ATL, como se describe en este artículo de KB:
http://support.microsoft.com/kb/201191
Es probable que estas bibliotecas tengan que ser suministradas por los desarrolladores para garantizar la versión correcta.
Ese es el error que obtienes cuando la DLL requiere que otro servidor COM se registre primero o tiene una dependencia en otra DLL que no está disponible. La herramienta Regsvr32.exe hace muy poco, llama a LoadLibrary () para cargar la DLL que se pasa en el argumento de la línea de comando. Luego GetProcAddress () para encontrar el punto de entrada DllRegisterServer () en la DLL. Y lo llama para dejarlo en el servidor COM para registrarse.
Lo que ese código hace es bastante indescifrable. Sin embargo, el diagnóstico que obtuvo es muy evidente por el código de error, por alguna razón, este servidor COM necesita otro para registrarse primero. El mensaje de error es malo, no te dice qué otro servidor necesita. Un triste efecto secundario de la forma en que funciona el manejo de errores COM.
Para solucionar este problema, utilice la herramienta ProcMon de SysInternals. Le muestra qué claves de registro Regsvr32.exe (en realidad: el servidor COM) se está abriendo para encontrar el servidor. Busque los accesos a la clave CLSID. Eso te da una pista de lo que {guid} está buscando. Eso todavía no te dice la DLL del servidor, debes comparar el rastreo con uno que obtienes de una máquina que funciona. La clave InprocServer32 tiene la ruta DLL.
Esto es lo que tiene que ocurrir.
Tienes que copiar tu DLL al que deseas registrarte: c: / windows / SysWOW64 /
Luego, en el cuadro de diálogo Ejecutar, escriba esto en: C:/Windows/SysWOW64/regsvr32.exe c:/windows/system32/YourDLL.dll
y recibirás el mensaje:
DllRegisterServer en c: / windows / system32 / YourDLL.dll se realizó correctamente.
He encontrado un problema similar al registrar mi activeX (OCX) en Windows Server 2008 R2. Para resolver esto, utilicé http://www.chestysoft.com/dllregsvr/default.asp herramienta. Hay algún problema de dependencia con mi ocx, así que me sale "No se pudo cargar el módulo temp12.dll. Asegúrese de que el binario esté almacenado en la ruta especificada o déjelo en primer lugar para verificar si hay problemas con los archivos .DLL binarios o dependientes. No se pudo encontrar el módulo especificado". Cuando intente registrar su OCX con esta herramienta, se le preguntará si la ocx está teniendo dependencia o si recibirá un mensaje de éxito. Obtuve el mensaje para la dependencia mfc70.dll y msvcr70.dll. También pegué estas dll en la carpeta del sistema 32 de C : / windows y its done. Después de eso, registro mi ocx con éxito. Utilicé la versión de 32 bits de la herramienta chestysoft (dllregsvr.exe) en la máquina Windows Server 2008 R2 de 64 bits.
Necesitas la ruta completa al regsvr32 entonces% windir $ / system32 / regsvr32 <*. Dll>
- Tal vez el paquete redistribuible de Microsoft Visual C ++ no está instalado en el equipo de destino (o tiene la versión incorrecta) descargar el paquete redistribuible de Microsoft Visual C ++
- Tal vez no haya creado .dll con Release config (pero con Debug en su lugar) http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html