¿Qué es un servicio?
Como puede leerse en
ms-its:%windir%\Help\glossary.chm::/glossary_per.htm#groupS
Podríamos decir que es un programa o aplicación que corre en segundo plano. Estos servicios se cargan al inicio y sin intervención del usuario, y obviamente, ocupan algo de la memoria y de los recursos del PC. Hay servicios nativos de XP, necesarios para que el sistema operativo funcione bien (desde muchos puntos de vista: Windows Update, dispositivos, redes, firewall, …), y otros que los instalan distintas aplicaciones de terceros. Un servicio puede depender de otro u otros con lo que deshabilitar alguno puede hacer que otros no funcionen bien. Por regla general no conviene tocar ni modificar los servicios de XP, y salvo contadas excepciones (como los de Windows Update que hay veces que no funcionan bien) no habría por qué tocarlos.
Una de las ventajas de que una aplicación funcione como un servicio es que por ejemplo, puede cargarse al inicio de Windows y sin que sea necesario ni siquiera iniciar ninguna sesión, esa aplicación puede ganar prioridad en el sistema, etc. Aunque como inconveniente quizá pues que “perdemos” el control de la aplicación cuando inicia como un servicio, e incluso que esto puede ser potencialmente peligroso si realmente no conocemos qué hace la aplicación (esto hablando de aplicaciones que podamos iniciar como servicio, no de los servicios de XP).
services.msc
Desde
En la pestaña General ya mencionada podemos cambiar el estado de un servicio e iniciarlo o detenerlo.
La pestaña Iniciar sesión de
services.msc
En esta pestaña podemos
estavblcer en qué cuenta iniciará el servicio. Esta pestaña es muy importante y
su mala configuración puede hacer que el servicio (o el sistema) no funcione
adecuadamente. Igualmente puede deshabilitarse el servicio de algunos perfiles.
Igualmente hay servicios que tienen que iniciar desde cuentas de sistema, no de
usuarios. Por ejemplo, el servicio Cliente
DNS tiene que iniciar desde NT AUTHORITY\NetworkService. El servicio Ayuda de NetBIOS sobre TCP/IP debe
hacerlo desde NT AUTHORITY\LocalService. Estas cuentas son de sistema (repito,
no de usuario) y deben dejarse tal cual configuradas para el correcto
funcionamiento del sistema.
Sin embargo, la gran mayoría de los servicios se ejecutan el llamada Cuenta del sistema local (LocalSystem account). Esta cuenta está predefinida en el sistema local, y es una de las que tienen los más altos privilegios dentro del sistema local y no tiene contraseña. De ahí que un servicio corriendo en esta cuenta tiene acceso a todo el ordenador estemos en la cuenta que estemos (limitada o administrativa). Aunque no conviene tocar esto, es posible que algunos servicios no requieran tan altos privilegios.
Servicios desde la línea de comandos
Desde la línea de comandos podemos también gestionar los servicios. En este caso, vamos a describir cómo podemos iniciarlos, detenerlos y obtener información sobre el estado de cada uno.
Para iniciar un servicio, nos vamos a Inicio > Ejecutar y escribimos cmd. En la nueva pantalla escribimos net start nombre_del_servicio. Con eso lo iniciaremos. Por ejemplo, net start wuauserv, nos iniciará el servicio Actualizaciones automáticas (cuyo nombre interno de Windows es wuauserv).
Para detener un servicio, ejecutamos la orden net stop nombre_del_servicio. Así, por ejemplo, net stop wuauserv detendrá el servicio Actualizaciones automáticas.
También podemos obtener en la ventana de comandos información sobre el estado de los servicios. Esto se hace con el comando sc query nombre_del_servicio. Por ejemplo, si escribimos sc query wuauserv obtendremos algo como esto (si tenemos bien configurado el servicio):
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
SERVICE_NAME: wuauserv
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Como vemos el servicio está Iniciado (“running”). Si estuviese
detenido obtendríamos algo como "stopped”.
¿Cómo iniciar una aplicación como un servicio?
Basta seguir este artículo de
http://support.microsoft.com/?kbid=251192
sc create “mi serv” binpath= c:\mi carpeta\mi app.exe”
Los servicios en el registro de Windows
Suele ser causa de mal funcionamiento de algunos servicios alguna corrupción en sus correspondientes claves del registro de Windows. En cada artículo correspondiente a cada registro se ha especificado cuál es la clave en la que está ubicado el registro, qué debe ser lo que tenga asignado el valor ImagePath y qué tiene que tener asignado el valor ServiceDll para aquellos servicios que lo tengan (es decir, servicios que tengan una dll asociada).
También es importante mirar algunos valores más en cada registro y que no se especifican en cada uno por ser el mismo para los servicios. Concretamente, si pinchamos sobre la clave del registro correspondiente a un servicio (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[nombre_servicio]) veremos que en el panel de la derecha nos salen, entre otros valores, el valor Start. Tiene que ser de tipo REG_DWORD y significa lo siguiente:
- Start: indica el tipo de inicio del servicio: 2, para el inicio automático; 3, para el inicio manual; y 4 para que el servicio esté deshabilitado.