Windows: Eliminar un servicio

En sistemas Windows los servicios se ejecutan en background y si tenemos configurado el inicio del servicio como "Automático", se iniciará de forma automática al iniciar Windows.

Con la consola GUI: services.msc, podemos administrar los servicios: detener, iniciar, pero no podemos eliminar un servicio.

Los servicios tienen el nombre corto y el nombre largo. 

Podemos ver el nombre corto y el nombre largo en la consola: services.msc

Según la captura que veremos a continuación:

Rojo: Nombre corto: "Nombre de servicio".
Verde: Nombre largo: "Nombre para mostrar".

La diferencia entre ambos es que mientras el nombre corto será igual en todos los idiomas de sistema operativo, el nombre largo cambiará dependiendo del idioma del sistema operativo.

Por ejemplo, el servicio "Browser", el nombre largo en inglés será: "Computer Browser", mientras que en castellano, será: "Examinador de equipos".

Es por este motivo que si pretendemos automatizar cualquier procedimiento sobre servicios, es buena idea utilizar el nombre corto.

Windows: Eliminar un servicio

En ocasiones al instalar software de terceros, nos podemos encontrar que si procedemos a desinstalar el programa en cuestión, no se elimine el servicio asociado al programa.

En este caso deberemos eliminar el servicio de forma manual.

Veamos diferentes formas para eliminar el servicio de forma manual:

1) Eliminar servicio: Edición del registro de Windows:


Abrimos la herramienta regedit como administrador y nos situamos en la siguiente rama:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

Encontraremos una carpeta con cada nombre de servicio.

2) Eliminar servicio: Comando sc


Con el comando sc, podemos crear, configurar y también eliminar servicios desde linea de comandos.

Por ejemplo:

Para listar el nombre corto y el nombre largo de todos los servicios de un equipo:

Si el idioma de Windows está en castellano:

SC QUERY state= all | FIND "NOMBRE_"

Después de ejecutar el comando, veremos para cada servicio:

NOMBRE_DE_SERVICIO: Nombre corto.
NOMBRE_PARA_MOSTRAR: Nombre largo.

Si el idioma de Windows está en Inglés:

SC QUERY state= all | FIND "_NAME"

Después de ejecutar el comando, veremos para cada servicio:

SERVICE_NAME: Nombre corto.
DISPLAY_NAME: Nombre largo.

Ejecutando SC QUERY state= all, listamos todos los servicios, sin importar el estado en que estén: iniciados, detenidos, con el comando find, filtramos la salida.

Una vez localizado el nombre del servicio, podemos proceder a eliminarlo.

Abrimos un CMD como Administrador.

Ejecutamos: sc delete "Nombre Corto"

y después de su ejecución, veremos: [SC] DeleteService CORRECTO

Si nos aparece "Acceso denegado", significa que no hemos abierto la ventana de CMD como administrador.
 
Con el comando sc, no solo podemos crear o eliminar un servicio, también podemos cambiar cualquier configuración del mismo, por ejemplo, configurar dependencias, cambiar el nombre a mostrar, cambiar el path, entre otros.

Consideraciones al eliminar un servicio:


1) Orden de inicio de los servicios:

Los servicios arrancan por un orden indicado en la siguiente clave del registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\servicegrouporder

Podemos ver el contenido de la clave ejecutando:

reg query hklm\system\currentcontrolset\control\servicegrouporder

Revisemos que el servicio a eliminar no se encuentre en la lista.

2) Dependencias del servicio:

En la consola GUI de services.msc, podemos ver la pestaña de dependencias.

Hemos de verificar que antes de eliminar un servicio, no haya otro servicio que lo necesite para poder iniciar.

Si vamos a eliminar un servicio de un software de terceros, lo más probable es que no hayan dependencias con otros servicios de sistema.

Windows: Eliminar un servicio

3) Eliminación de ficheros:

El servicio que vayamos a eliminar, tendrá ficheros asociados que podemos eliminar al eliminar el servicio.

Para determinar los ficheros a eliminar, bastará con situarnos en la rama del registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

Situarnos sobre la carpeta correspondiente al servicio y buscar la clave ImagePath.

En la clave ImagePath, veremos la ruta completa donde están situados los binarios correspondientes al servicio.

Windows: Eliminar un servicio

1 comentario: