Dado que esta pregunta está etiquetada como "vb.net", me pregunto por qué está intentando registrar una DLL que creó en VB.NET. Para ser utilizado con regsvr32, una DLL debe exportar las funciones DllRegisterServery DllUnregisterServer. No hay ningún registro de la gran mayoría de las DLL que crea.
Cody Gray
12
¿Qué quieres decir con no funciona o no es útil? ¿Recibes un mensaje de error? ¿Qué dice?
Cody Gray
Respuestas:
68
Escribe regsvr32 name.dllen el símbolo del sistema (¡ejecutado en modo elevado!) Y presiona "Enter". Tenga en cuenta que name.dlldebe reemplazarse con el nombre de la DLL que desea registrar. Por ejemplo, si desea registrar iexplore.dll, escriba regsvr32 iexplore.dll.
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\syswow64regsvr32 c:\filename.dll
Esta realmente debería ser la respuesta correcta. Puedo entender que en su publicación original la sintaxis era incorrecta, pero Rajkumar comentó que estaba recibiendo un mensaje de error incluso cuando usaba la sintaxis correcta. Esto lleva dos pasos a la respuesta correcta para alguien que busca en lugar de uno. Primero a la respuesta seleccionada como correcta, luego siguiendo la cadena de comentarios, terminando en esta publicación.
Rob
102
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
"
.
+1 para "Sé que parece al revés, pero así es como funciona" con enlace a support.microsoft.com ... sin el enlace es difícil de creer.
Trevor Boyd Smith
6
"En cmd elevado" es muy importante !!
shindigo
4
No creo que tengamos que copiarlo en la carpeta system32 o syswow64. Simplemente registre el archivo donde sea que esté.
Nikos
30
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).
¿Por qué eso importa? regsvr32se encargará de los detalles, teóricamente detectará si está registrando una DLL de 32 o 64 bits: stackoverflow.com/questions/18935163/…
Sk8erPeter
8
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.
Si ya ha copiado el nombre de archivo.dll a la carpeta syswow64 y cambia el directorio de trabajo a syswow64 en el símbolo del sistema, entonces "c: \" en "regsvr32 c: \ nombre de archivo.dll" no es necesario. En resumen, "regsvr32 c: \ filename.dll" debería leer "regsvr32 filename.dll"
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.
esto funciona, pero podría ser problemático si necesita ejecutarlo como administrador.
workabyte
3
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 ( -.dllo -.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 -.dllo -.axencima 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):
Haga clic derecho en el archivo por lotes;
Seleccionar Create shortcut;
Haga clic derecho en el acceso directo;
Seleccionar Properties;
Haga clic en la Compatibilitypestaña;
Marque la casilla etiquetada Run this program as administrator;
Arrastre y suelte su archivo -.dllo -.axsobre el nuevo acceso directo en lugar del archivo por lotes.
Eso es todo . Elegí en COPYlugar de MOVEevitar el fracaso de cualquier intento de seguimiento relacionado con UAC. El registro exitoso debe ir seguido de la eliminación del archivo ( -.dllo ) de la biblioteca original -.ax.
No se preocupe por las copias realizadas en la carpeta del sistema ( C:\Windows\System32o 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\System32oC:\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.
Desde el archivo por lotes correcto, copie la ruta de la carpeta del sistema
Si es de 64 bits: C:\Windows\System32
Si es de 32 bits: C:\Windows\SysWOW64
Péguelo en la siguiente línea para que preceda %nx1
Si es de 64 bits: regsvr32 "C:\Windows\System32\%nx1"
Si es de 32 bits: regsvr32 "C:\Windows\SysWOW64\%nx1"
Pegar la ruta entre comillas
Insertar barra invertida para separar %nx1de la ruta de la carpeta del sistema
o ...
Ejecute este archivo por lotes de escopeta, que (en orden):
Realizar limpieza de procesos de registro abortados
Invierta cualquier proceso de registro completado por su archivo de biblioteca;
Elimine todas las copias de su archivo de biblioteca que se hayan guardado en cualquiera de las carpetas del sistema;
Haga una pausa para que pueda terminar el archivo por lotes en este punto (y ejecute otro si lo desea).
Intente la instalación de 64 bits en su archivo de biblioteca
Copie su archivo de biblioteca a C:\Windows\System32;
Registre su archivo de biblioteca como un proceso de 64 bits;
Haga una pausa para permitirle terminar el archivo por lotes en este punto.
Deshacer la instalación de 64 bits
Invierta cualquier registro de su archivo de biblioteca como un proceso de 64 bits;
Elimine su archivo de biblioteca de C:\Windows\System32;
Haga una pausa para que pueda terminar el archivo por lotes en este punto (y ejecute otro si lo desea).
Intente la instalación de 32 bits en su archivo de biblioteca
Copie su archivo de biblioteca a C:\Windows\SystemWOW64
Registre su archivo de biblioteca como un proceso de 32 bits;
Haga una pausa para permitirle terminar el archivo por lotes en este punto.
Eliminar la copia original no registrada del archivo de la biblioteca
Run as administratoraparece atenuado cuando creé un acceso directo para el archivo bat. Estoy registrado como administrador. Además, ¿es %nx1o %n1?
Jon Grah
3
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
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:
1 - mensaje de error:
"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"
2 - procedimiento de reparación:
Inicio / escriba cmd / RightMouse Haga clic en cmd.exe y elija "Ejecutar como administrador"
escribió: regsvr32 / s C: \ Archivos de programa \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C: \ Archivos de programa \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
regsvr32
, una DLL debe exportar las funcionesDllRegisterServer
yDllUnregisterServer
. No hay ningún registro de la gran mayoría de las DLL que crea.Respuestas:
Escribe
regsvr32 name.dll
en el símbolo del sistema (¡ejecutado en modo elevado!) Y presiona "Enter". Tenga en cuenta quename.dll
debe reemplazarse con el nombre de la DLL que desea registrar. Por ejemplo, si desea registrar iexplore.dll, escribaregsvr32 iexplore.dll
.fuente
regsvr32
ruta del archivo .dll con nombre de archivo y extensión y presione enterBueno, 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:
Solución de ese artículo:
fuente
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
" .
fuente
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).
fuente
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
fuente
Finalmente encontré la solución, simplemente ejecute CMD como administrador y luego escriba
entonces escribe esto
Espero que la respuesta te ayude
fuente
Si la DLL es de 32 bits:
si la DLL es de 64 bits:
fuente
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.
fuente
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:
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
fuente
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: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 deMOVE
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
oC:\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
oC:\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
fuente
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
fuente
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 .
fuente
Usted necesidad de ejecutar el
cmd.exe
enc:\windows\system32\ by administrator
Comandos: para anular el registro de archivos * .dll
regsvr32.exe /u C:\folder\folder\name.dll
Para registrar archivos * .dll
fuente
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
fuente
Así es como solucioné este problema en una máquina Win7 x64:
1 - mensaje de error:
"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"
2 - procedimiento de reparación:
Espero que esto ayude !
fuente