A veces, si eres usuario de Windows, es probable que hayas tenido que ejecutar la utilidad regsvr32.exe
para “registrar un DLL”. Si es así, probablemente no estabas al tanto de lo que estaba sucediendo bajo la superficie. Esta críptica utilidad se utiliza para gestionar los controles de Object Linking and Embedding (OLE) que muchas aplicaciones de Windows utilizan.
Pero, ¿qué es exactamente un control OLE y por qué querrías registrar un control OLE? En este tutorial, aprenderás las muchas formas de instalar, desinstalar, registrar o anular el registro de un control OLE con la utilidad regsvr32.exe
.
Prerrequisitos
Asegúrate de tener los requisitos a continuación para seguir ejecutando la utilidad regsvr32.exe
:
- Dado que la utilidad regsvr32.exe está integrada en la mayoría de las versiones de Windows, solo necesitas una computadora con Windows con una cuenta de administrador.
- Necesitarás PowerShell 7 para aprovechar el script de PowerShell incluido en este tutorial.
¿Qué son los controles OLE?
Antes de aprender a usar la utilidad regsvr32.exe
, primero debes tener una comprensión rudimentaria de lo que gestiona esta herramienta, los controles OLE.
Los controles OLE son una tecnología específica de Windows desarrollada para facilitar la inserción y vinculación de documentos y otros objetos. Esta tecnología ha evolucionado a lo largo de los años, y se han creado diferentes componentes sobre la base de la tecnología OLE.
Es posible que hayas oído hablar del Modelo de Objetos Componente (COM), Modelo de Objetos de Componentes Distribuidos (DCOM), o controles ActiveX. Cada una de estas tecnologías está construida sobre la tecnología OLE o es una extensión de la misma, definiendo una interfaz estándar para funciones escritas en varios lenguajes.
ActiveX está obsoleto pero aún está disponible a través de Internet Explorer en Windows 10, aunque no en Microsoft Edge.
Registro de controles OLE
Ahora que comprendes lo que hace la utilidad regsvr32.exe
, es hora de registrar un control OLE, y hay varias variantes de comandos para hacerlo. Siéntete libre de elegir una variante de comando a continuación o simplemente probar cada una.
Puedes registrar controles OLE a través de PowerShell o de un símbolo del sistema de Windows. De cualquier manera, asegúrate de ejecutar tu línea de comandos como administrador para garantizar que el control se registre correctamente.
Mostrar un resultado en la interfaz gráfica
Registrando un DLL con regsvr32
, en el caso de uso más simple, implica pasar la ruta del DLL a la herramienta. Por defecto, regsvr32
mostrará una ventana emergente indicando el éxito (o el fallo). Para registrar un DLL, proporciona el nombre o la ruta completa del DLL, como se muestra a continuación.
Ejecutar el comando a continuación creará las clases de registro necesarias para el control OLE de destino en la clave HKEY_CLASSES_ROOT\CLSID para instancias x64 o HKEY_CLASSES_ROOT\WOW6432Node\CLSID para instancias x86.
Al tener éxito, verás un resultado en la interfaz gráfica que indica que DllRegisterServer
se realizó con éxito.

Cuando registras un control OLE,
regsvr32.exe
aplicará la ruta de búsqueda del sistema. Por lo tanto, si necesitas registrar un archivo específico fuera de esa ruta, es mejor especificar la ruta absoluta del archivo.
Registrando un Control OLE en Silencio
Cuando estás ejecutando comandos, no siempre es deseable que aparezca un cuadro de diálogo. Así que veamos cómo puedes suprimir cualquier cuadro de diálogo al registrar un control OLE.
Para suprimir los cuadros de diálogo, ejecuta regsvr32
seguido del nombre del DLL (msxml3.dll
) y el interruptor /s
para registrar el control OLE en silencio. La única desventaja de este comando es que también estarás suprimiendo cualquier mensaje de error.
Existe un interruptor no documentado,
/e
, que suprime solo el mensaje de éxito de la GUI pero muestra el mensaje de error de la GUI. ¡Inteligente!

Registrando un Control OLE y Especificando una Acción de Instalación
Cuando especificas una DLL para el registro de un OLE, solo estás llamando al método DllRegisterServer
, pero hay momentos en los que necesitas tomar acción después del registro. Para hacer eso, puedes especificar el parámetro /i
.
Por ejemplo, podrías pasar una cadena de entrada (U
) al parámetro /i
que invocará simultáneamente el método DllInstall
y el método DllRegisterServer
.
El método
DllInstall
permite que la utilidadregsvr32.exe
instale una DLL de más de una forma y se invoquen varias acciones para una DLL.

Especificar una Acción de Instalación sin Llamar al Método DllRegisterServer
Tal vez solo quieras instalar un control OLE sin volver a registrarlo. Si es así, ejecuta el siguiente comando.
El comando anterior utiliza el parámetro /n
para evitar llamar al método DllRegisterServer
para la DLL shell32.dll en el método de instalación DllInstall.

Anulando el Registro de un Control OLE con regsvr32.exe
Si has registrado un control OLE sin errores, eso es un alivio. Pero puede haber momentos en los que necesites desinstalar un control OLE cuando está en conflicto con otros. Afortunadamente, regsvr32.exe
ofrece la capacidad de anular el registro y desinstalar un control OLE.
Para anular el registro y desinstalar un control, ejecuta el regsvr32.exe
y pasa el parámetro /u
para anular el registro del control OLE. Puedes ver en el resultado de la interfaz de usuario que el DLL msxml3.dll se desinstaló correctamente.
Para ejecutar una acción junto con la anulación del registro, pasa la cadena de acción (
U
) al parámetro/i
. Entonces el comandoregsvr32
llamará al métodoDllInstall
con esa acción como una desinstalación, así:regsvr32 /i:acción /U msxml3.dll
.

Manejo de Errores para regsvr32.exe
Has experimentado el registro exitoso de controles OLE, pero ¿qué pasa si el comando de registro se encuentra con un error? Hay un puñado de errores que pueden aparecer cuando intentas gestionar controles. Estos mensajes pueden ser crípticos a veces, pero se explican a continuación para informarte sobre lo que los causa.
FAIL_ARGS | ⦿ “Unrecognized flag” ⦿ “Extra argument on command line” ⦿ “This command is only valid when an OLE Custom Control project is open” ⦿ “No DLL name specified” |
Implies that a command-line argument was incorrect. |
FAIL_OLE | “OleInitialize failed” | Implies that there was an error in properly initializing the OLE subsystem. |
FAIL_LOAD | “LoadLibary(<dllname) failed>“ | This can be a host of reasons such as a dependent library missing, the DLL is inaccessible due to permissions, or the file is missing. |
FAIL_ENTRY | ⦿ ” was loaded, but the entry point was not found. does not appear to be an .DLL or .OCX file” ⦿ ” was loaded, but the entry point was not found. may not be exported or a corrupt version may be in memory. Consider using PView to detect and remove it.” ⦿ ” was loaded, but the entry point was not found. may not be exported, or a corrupt version may be in memory. Consider using WPS to detect and remove it.” |
Implies that the entry point in the DLL, or function name, is missing. |
FAIL_REG | “<DLLEntryPoint> in <DLLName> failed“ | Implies that despite all the prior steps completing the system still failed to fully register the DLL. |
Ampliando la Utilidad regsvr32.exe
con PowerShell
Como regsvr32.exe
prefiere la salida de la interfaz gráfica de usuario, la automatización puede ser un desafío. Para eliminar ese desafío, puedes envolver la utilidad regsvr32.exe
en una función de PowerShell. Al crear una función de PowerShell, puedes ejecutar regsvr32.exe
como si fuera un cmdlet nativo de PowerShell.
Como ejemplo, echa un vistazo a la función Invoke-RegSvr32
de PowerShell a continuación. Esta función invoca la utilidad regsvr32
y utiliza PowerShell para capturar el código de salida y procesarlo en consecuencia. Y aplicando una validación de argumentos de antemano, ¡incluso puedes evitar errores por completo!
Para experimentar con la función a continuación, abre una nueva consola de PowerShell y copia y pega el código en ella. Luego, podrás invocar la función como se muestra a continuación.
A continuación, encontrarás algunos ejemplos de cómo utilizar la función Invoke-RegSvr32
.

Invoke-RegSvr32
PowerShell CommandConclusión
Para este punto, has aprendido a registrar y anular el registro de DLL y manejar errores. Aunque regsrv32.exe
puede que no se use tanto en las tareas diarias, hay momentos específicos en los que necesitarías registrar o anular el registro de una DLL.
Para ampliar aún más esto, podrías expandir PowerShell para tener en cuenta aún más verificaciones y casos particulares. ¡Incluso podrías crear una función de PowerShell para listar los controles registrados en la ubicación del registro CLSID
!