He intentado utilizar el siguiente código:
cd c:\windows\system32
regsvr32.exe dllname.ax
Pero esto no me está funcionando. ¿Cómo puedo registrar un archivo DLL en Windows 7 con un procesador de 64 bits?
He intentado utilizar el siguiente código:
cd c:\windows\system32
regsvr32.exe dllname.ax
Pero esto no me está funcionando. ¿Cómo puedo registrar un archivo DLL en Windows 7 con un procesador de 64 bits?
Respuestas:
Escribe regsvr32 name.dll
en el símbolo del sistema (¡ejecutado en modo elevado!) Y presiona "Enter". Tenga en cuenta que name.dll
debe reemplazarse con el nombre de la DLL que desea registrar. Por ejemplo, si desea registrar iexplore.dll, escriba regsvr32 iexplore.dll
.
regsvr32
ruta del archivo .dll con nombre de archivo y extensión y presione enter
Bueno, no especifica si es un dll de 32 o 64 bits y no incluye el mensaje de error, pero supongo que es el mismo problema que se describe en este artículo de KB: Mensaje de error cuando ejecuta Regsvr32.exe en Windows de 64 bits
Cita de ese artículo:
Este comportamiento se produce porque el archivo Regsvr32.exe de la carpeta System32 es una versión de 64 bits. Cuando ejecuta Regsvr32 para registrar una DLL, está utilizando la versión de 64 bits de forma predeterminada.
Solución de ese artículo:
Para resolver este problema, ejecute Regsvr32.exe desde la carpeta% SystemRoot% \ Syswow64. Por ejemplo, escriba los siguientes comandos para registrar la DLL:
cd \windows\syswow64
regsvr32 c:\filename.dll
Si la DLL es de 32 bits:
Copie la DLL en C: \ Windows \ SysWoW64 \
En un símbolo del sistema elevado :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
si la DLL es de 64 bits:
Copie la DLL en C: \ Windows \ System32 \
En un símbolo del sistema elevado :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
Sé que parece al revés, pero así es como funciona. Ver:
http://support.microsoft.com/kb/249873
Cita: "Nota En una versión de 64 bits de un sistema operativo Windows, hay dos versiones del archivo Regsv32.exe:
La versión de 64 bits es% systemroot% \ System32 \ regsvr32.exe.
La versión de 32 bits es% systemroot% \ SysWoW64 \ regsvr32.exe
"
.
En un sistema x64, system32 es de 64 bits y syswow64 es de 32 bits (no al revés como se indica en otra respuesta). WOW (Windows en Windows) es el subsistema de 32 bits que se ejecuta en el subsistema de 64 bits).
Es un desastre en términos de nombres y solo sirve para confundir, pero así es.
De nuevo ...
syswow64 es de 32 bits, NO de 64 bits.
system32 es de 64 bits, NO de 32 bits.
Hay un regsrv32 en cada uno de estos directorios. Uno es de 64 bits y el otro es de 32 bits. Lo mismo ocurre con odbcad32 y et al. (Si desea ver controladores ODBC de 32 bits que no se mostrarán con el odbcad32 predeterminado en system32, que es de 64 bits).
regsvr32
se encargará de los detalles, teóricamente detectará si está registrando una DLL de 32 o 64 bits: stackoverflow.com/questions/18935163/…
Abra el menú de inicio y escriba cmd en el cuadro de búsqueda Mantenga presionado Ctrl + Shift y presione Entrar
Esto ejecuta el símbolo del sistema en modo Administrador.
Ahora escriba: regsvr32 MyComobject.dll
Finalmente encontré la solución, simplemente ejecute CMD como administrador y luego escriba
cd \windows\syswow64
entonces escribe esto
regsvr32 c:\filename.dll
Espero que la respuesta te ayude
Si la DLL es de 32 bits:
si la DLL es de 64 bits:
Todo aquí estaba fallando como camino equivocado. Entonces recordé un truco de los viejos tiempos de Win95. Abra la carpeta del programa donde reside el .dll, abra C: / Windows / System32, desplácese hacia abajo hasta regsvr32 y arrastre y suelte el dll de la carpeta del programa en rgsrver32. Boom, hecho.
Conocer el mensaje de error sería bastante valioso. Está destinado a proporcionar información, aunque para usted no tiene ningún sentido, lo tiene para nosotros. Si me veo obligado a adivinar, diría que la DLL es un filtro DirectX de 32 bits. En cuyo caso, este debería ser el curso de acción adecuado:
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
Esto debe ejecutarse en un símbolo del sistema elevado para que UAC no pueda detener el acceso al registro que se requiere. Haga más preguntas sobre esto en superuser.com
Acabo de probar este método extremadamente simple y funciona perfectamente, pero uso la cuenta de administrador incorporada, por lo que no tengo que saltar por los obstáculos para obtener privilegios elevados.
El siguiente archivo por lotes libera al usuario de la necesidad de mover archivos dentro y fuera de las carpetas del sistema. También deja que Windows aplique la versión adecuada de Regsvr32
.
INSTRUCCIONES:
En la carpeta que contiene la biblioteca ( -.dll
o -.ax
) archivo que desea registrar, abra un nuevo archivo de texto y péguelo en UNA de las siguientes rutinas:
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
copy %1 C:\Windows\System32
regsvr32 "%nx1"
echo END BATCH FILE
pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
copy %1 C:\Windows\SysWOW64
regsvr32 "%nx1"
echo END BATCH FILE
pause
Guarde su nuevo archivo de texto como un archivo por lotes ( -.bat
); luego, simplemente arrastre y suelte su archivo -.dll
o -.ax
encima del archivo por lotes.
Si UAC no le da la oportunidad de ejecutar el archivo por lotes como administrador, es posible que deba elevar manualmente los privilegios (las instrucciones son para Windows 7):
Create shortcut
;Properties
;Compatibility
pestaña;Run this program as administrator
;-.dll
o -.ax
sobre el nuevo acceso directo en lugar del archivo por lotes.Eso es todo . Elegí en COPY
lugar de MOVE
evitar el fracaso de cualquier intento de seguimiento relacionado con UAC. El registro exitoso debe ir seguido de la eliminación del archivo ( -.dll
o ) de la biblioteca original -.ax
.
No se preocupe por las copias realizadas en la carpeta del sistema ( C:\Windows\System32
o C:\Windows\SysWOW64
) por pasadas anteriores; se sobrescribirán cada vez que ejecute el archivo por lotes.
A menos que haya ejecutado el archivo por lotes incorrecto , en cuyo caso probablemente querrá eliminar la copia realizada en la carpeta del sistema incorrecta ( C:\Windows\System32
o C:\Windows\SysWOW64
) antes de ejecutar el archivo por lotes adecuado, ... o ...
Ayude a Windows a elegir el archivo de biblioteca correcto para registrar calificando completamente su ubicación de directorio.
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
de la ruta de la carpeta del sistemaEjecute este archivo por lotes de escopeta, que (en orden):
C:\Windows\System32
;C:\Windows\System32
;C:\Windows\SystemWOW64
Run as administrator
aparece atenuado cuando creé un acceso directo para el archivo bat. Estoy registrado como administrador. Además, ¿es %nx1
o %n1
?
Hay una diferencia en Windows 7. Iniciar sesión como Administrador no otorga los mismos derechos que cuando ejecuta un programa como Administrador.
Vaya a Inicio - Todos los programas - Accesorios. Haga clic derecho en la ventana de comandos y seleccione "Ejecutar como administrador". Ahora registre el dll normalmente a través de: regsrvr32 xxx.dll
Y mientras hace esto, si obtiene el código de error 0x80040201, pruebe la solución en DllRegisterServer falló con el código de error 0x80040201 , pero asegúrese de abrir el símbolo del sistema como Ejecutar como administrador .
Parte de la confusión con respecto a regsvr32 es que en las ventanas de 64 bits el nombre y la ruta no han cambiado, pero ahora registra archivos DLL de 64 bits. El regsvr32 de 32 bits existe en SysWOW64, un nombre que parece representar aplicaciones de 64 bits. Sin embargo, WOW64 en el nombre se refiere a Windows en Windows 64, o más explícitamente a Windows de 32 bits en Windows de 64 bits. Cuando lo piensas de esta manera, el nombre tiene sentido aunque es confuso en este contexto.
No puedo encontrar mi fuente original en un blog de MSDN, pero se hace referencia a ella en este artículo de Wikipedia http://en.wikipedia.org/wiki/WoW64
Así es como solucioné este problema en una máquina Win7 x64:
"CoCreateInstance () falló. Por favor, compruebe las entradas de registro CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3} y asegúrese de haber iniciado sesión como administrador"
Espero que esto ayude !
regsvr32
, una DLL debe exportar las funcionesDllRegisterServer
yDllUnregisterServer
. No hay ningún registro de la gran mayoría de las DLL que crea.