Introducción a los servicios de Windows XP
1¿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.



Comentarios
Saludos
Primero una felicitación por el artículo, me pareció muy interesqante.
Aquí va una duda de novata total. En un servidor que corre bajo Windows Server 2003 Std. Edition tengo corriendo un servicio que programaron unos compañeros de trabajo, el cual está fallando últimamente. Necesito descartar que el problema venga porque el propio servidor está teniendo problemas.
¿Qué herramienta puedo utilizar para diagnosticar el correcto funcionamiento del servidor?
He probado como una docena de programas para diagnóstico pero sólo devuelven informes sobre hardware y no tienen nada que ver con lo que quiero (Everest, SIW, Daphne, Belarc Advisor, Fresh Diagnose, etc)
Espero que alguno me quiera iluminar un poquito.
En primer lugar felicitarlos por el foro, y por encontrar personas con tan amplios conocimentos...
Podria alguien colaborarme, es que tengo una impresora en red y cada vez que alguien envia una impresion hay que reiniciar el servicio de cola de impresion manualmente, intente tomar el control desde otro equipo por medio de este comando:
net print (servidor)(Impr esora)/restart. .. Pero no funciona igual hay que ir al pc donde esta conectada la impresora y hacerlo manualmente... Como podria solucionar este problema..?
Gracias de antemano....
Agradecere cualquier ayuda al mail mencionado arriba medio en clave para evitar spam
Intento meter un proceso en un equipo remoto para que se inicie automaticamente.
He logrado meter el servicio en el equipo remoto pero no logro que se inicie, ni haciendolo manualmente.
El proceso es un programa ejecutable.
la secuencia de comando que utilizo es la siguiente: "sc [\\equipo_remot o] create [n_proceso] c:\*.exe start= auto
(de aquà en adelante, digamos, tu router), o no responde, o se ha desconfigurado/deshabilitado.
Tienes 2 opciones.
1. Activar y verificar el DHCP en tu router.
2. Asignacion manual de IP en el dispositivo que usas.
Para Asignacion Manual, te sugiero lo siguiente
(te doy el más básico que es el que usan la mayorÃa).
Inicio -> Configuracion -> Panel de Control ->
Conexiones de Red -> Conexion de Area Local
(usa esa si es la que usas para conectar) ->
Boton Derecho -> Propiedades -> Seleccionas Protocolo Internet (TCP/IP) ->
Propiedades -> Usar la Siguiente Direccion IP -> Direccion IP: 192.168.1.33 ->
Máscara de Subred: 255.255.255.0 (te la pone sola) -> Puerta de Enlace ->
192.168.1.1 -> Usar las siguientes direcciones de servidor DNS ->
Preferido: 194.179.1.100 -> Alternativo -> 194.179.1.101
Aceptas y Guardas y nos cuentas.
Un saludo.
Suscripción de noticias RSS para comentarios de esta entrada.