Servicios de Windows: instalación y desinstalación mediante la herramienta de línea de comandos InstallUtil.exe y resolución de fallos habituales
1. Instalar y desinstalar servicios de Windows desde la línea de comandos
1. Herramienta
Microsoft proporciona InstallUtil.exe para instalar y desinstalar servicios de Windows basados en .NET.
InstallUtil.exedepende de la versión de .NET Framework. Si la versión de la herramienta no coincide con el marco de destino del proyecto, la instalación fallará directamente;- Debes copiar la versión correspondiente de
InstallUtil.exeal directorio de salidaDebugdel programa de servicio (misma carpeta que el archivo exe del servicio).
La herramienta InstallUtil forma parte del SDK de .NET. Cada versión instalada del SDK trae una versión distinta de InstallUtil.
.NET Framework 4.0 / 4.5 / 4.6 / 4.7 / 4.8 (más usadas) cuenta con versiones separadas para 32 bits y 64 bits.
Ejemplo de ruta para la versión de 64 bits: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
.NET 5 /.NET 6 /.NET 7 /.NET 8 /.NET 9 (familia .NET Core) no trae InstallUtil.exe
2. Estructura de carpetas y archivos (carpeta Debug)
WindowsServiceDemo.exe // Programa principal del servicio Windows
WindowsServiceDemo.pdb
InstallUtil.exe // Herramienta de instalación copiada
install.bat // Script de instalación
uninstall.bat // Script de desinstalación
log.txtLenguaje del código: JavaScript (javascript)
3. Creación de scripts por lotes
install.bat 【Instalar servicio】
d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil WindowsServicePicture.exe
pauseLenguaje del código: CSS (css)
uninstall.bat 【Desinstalar servicio】
d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil /u WindowsServicePicture.exe
pause
Explicación del parámetro:
/u= uninstall, sirve para desinstalar el servicio
Es obligatoriohacer clic derecho y ejecutar CMD como administrador o ejecutar directamente el archivo bat con permisos de administrador. Si faltan permisos, se lanzará una excepción de seguridad, la instalación fallará y se revertirá automáticamente.
2. Problemas frecuentes al instalar servicios de Windows y sus soluciones
Resumen de las causas principales
Dos causas principales de fallo en la instalación:
- La plataforma de compilación del proyecto de servicio, la versión de .NET y la versión de InstallUtil.exe no coinciden;
- Falta de permisos de administrador, lo que activa el bloqueo de seguridad del sistema.
Excepción 1: BadImageFormatException
Mensaje de error
System.BadImageFormatException: No se pudo cargar el archivo o ensamblado "WindowsServiceDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.Lenguaje del código: JavaScript (javascript)
Causa
Hay una incompatibilidad entre la plataforma de compilación objetivo (x86/x64/AnyCPU) y la arquitectura de InstallUtil.exe, o la versión de .NET no es compatible.
Soluciones
- Configura el proyecto para compilar usando
x86; - Usa la versión de InstallUtil.exe que corresponda al marco del proyecto;
Excepción 2: SecurityException, error de permisos de seguridad (muy frecuente)
Mensaje de error
Se produjo una excepción durante la fase de instalación.
System.Security.SecurityException: No se encontró el origen, pero no se pudo buscar parte o la totalidad de los registros de eventos. Registro inaccesible: Security.
Se inicia la fase de reversión de la instalación.
La instalación ha fallado y se ha ejecutado la reversión.Lenguaje del código: CSS (css)
Ejemplo de ruta completa del registro:
H:\CodigoFuenteProyecto\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.InstallLogLenguaje del código: CSS (css)
Causa raíz
La línea de comandos o Visual Studio no se ejecutan con permisos de administrador y no pueden leer ni escribir los registros de eventos del sistema.
Soluciones estándar
- Visual Studio: haz clic derecho Ejecutar como administrador, abre el proyecto y vuelve a compilar;
- CMD / script bat: clic derecho → Ejecutar como administrador;
- Selecciona la plataforma de compilación
x86para generar el proyecto.
Indicador de instalación correcta
Salida de consola:
La fase de confirmación se completó correctamente.
Ha finalizado la instalación transaccional.
Abre la lista de servicios de Windows (services.msc) y verás el servicio ya registrado.
Instalación y desinstalación de servicios