¿Qué es svchost.exe y por qué se está ejecutando?

Administrador de tareas con procesos svchost

Sin duda está leyendo este artículo porque se pregunta por qué hay casi una docena de procesos ejecutándose con el nombre svchost.exe. No puede finalizarlos y no recuerda haberlos iniciado... ¿qué son?

¿Entonces qué es?

Según Microsoft: "svchost.exe es un nombre de proceso de host genérico para servicios que se ejecutan de bibliotecas de enlace dinámico". ¿Podría traducirnos eso al español por favor?

Hace algún tiempo, Microsoft comenzó a mover todas funcionalidades de los servicios internos de Windows a archivos .dll en lugar de archivos .exe. Desde el punto de vista de la programación esto tiene sentido para la reutilización... pero el problema es que no puede iniciar un archivo .dll directamente desde Windows, tiene que ser cargado desde un ejecutable funcional (.exe). De esta manera nació el proceso svchost.exe.

¿Por qué hay tantos procesos svchost.exe ejecutándose?

Si alguna vez echó un vistazo a la sección Servicios del panel de control, debe haber notado que hay muchos servicios requeridos por Windows. Si cada servicio particular corriera en una misma instancia de svchost.exe, una falla en uno podría hacer fallar a todo Windows… por eso están separados.

Estos servicios están organizados en grupos lógicos, por lo que una instancia de svchost.exe es creada para cada grupo. Por ejemplo, una instancia de svchost.exe ejecuta 3 servicios relacionados con el firewall. Otra instancia de svchost.exe puede ejecutar todos los servicios relacionados con la interfaz de usuario, y así.

¿Qué puedo hacer al respecto?

Puede reducir los servicios innecesarios al deshabilitarlos o detener los servicios que no se necesita que estén ejecutándose. Además, si nota un consumo alto de CPU en una sola instancia de svchost.exe puede reiniciar los servicios que se estén ejecutando bajo esa instancia.

El problema más grande es identificar qué servicios se están ejecutando en cada isntancia de svchost.exe particular... trataremos este tema a continuación.

Si tiene curiosidad sobre lo que estamos hablando, tan solo abra el Administrador de tareas y revise el diálogo "Mostrar procesos de todos los usuarios":

Administrador de tareas

Revisar desde la consola de línea de comandos (Vista o XP Pro)

Si desea ver qué servicios se están ejecutando en una instancia particular de svchost.exe, puede utilizar el comando tasklist desde el símbolo del sistema para ver la lista de servicios.

tasklist /SVC
Lista de tareas de la consola

El problema de utilizar el método de la consola de línea de comandos es que no necesariamente va a reconocer qué significan estos nombres crípticos.

Revisar el Administrador de tareas en Vista

Puede hacer clic derecho en un proceso svchost.exe particular y luego elegir la opción "Ir al servicio".

Ir al servicio

Con esto se cambiará a la pestaña Servicios, donde se seleccionarán los servicios ejecutándose bajo ese proceso svchost.exe:

Servicio

Lo bueno de hacerlo de esta manera es que puede ver el nombre real bajo la columna Descripción, por lo que podrá deshabilitar ese servicio si no quiere que se ejecute.

Utilizar el Explorador de procesos en Vista o XP

Puede utilizar la excelente utilidad Explorador de procesosde Microsoft/Sysinternals para ver qué servicios se están ejecutando como parte de un proceso svchost.exe.

Al pasar su mouse sobre uno de los procesos le mostrará una lista emergente de todos los servicios:

Explorador de procesos

O puede hacer doble clic sobre una instancia de svchost.exe y seleccionar la pestaña Servicios, en donde podrá elegir detener uno de estos procesos si así lo desea.

Explorador de procesos (propiedades)

Deshabilitar servicios

Abra Servicios de la sección de herramientas de administración del Panel de control, o escriba services.msc en la búsqueda del menú inicio o la ventana Ejecutar.

Encuentre el servicio que le gustaría deshabilitar en la lista y haga doble clic en él, o clic derecho y elija Propiedades.

Servicio

Modifique el tipo de Inicio a Deshabilitado, y luego haga clic en el botón Detener para detenerlo inmediatamente.

Deshabilitar

También puede usar el símbolo del sistema para deshabilitar el servicio si así lo desea. En este comando "trkwks" es el Nombre del servicio del diálogo anterior, pero si vuelve al comando tasklist del principio de este artículo podrá notar que lo puede encontrar allí también.

sc config trkwks start= disabled