Busque sus servicios de Windows, vea cada cambio antes de ejecutarlo y descubra qué se ha desviado desde ayer
Better Windows Services es services.msc reconstruido para quienes administran equipos Windows: una ventana y una línea de comandos sobre un único motor. Haga una pregunta al equipo en lugar de recorrer ochocientas filas. Vea qué hará un cambio antes de pulsar nada. Y lo que services.msc nunca tuvo: congelar cada servicio en un archivo y, una semana después, preguntar qué cambió.
- Libre y gratuito, GPL-3.0
- Un solo archivo, o un instalador
- Sin derechos de administrador para consultar
- Nunca se conecta a Internet
bws que pide exactamente lo mismo. El programa habla inglés: la ventana lee un archivo de idioma colocado junto a ella, así que es posible traducirla sin recompilar.Cómo se ve en uso
Una sesión real, en un Windows instalado en polaco: los nombres para mostrar vienen de Windows, así que están en su idioma. La ventana en sí habla inglés.
services.msc apenas ha cambiado desde Windows 2000
Los administradores pasan horas a la semana en él chocando con las mismas paredes.
- Sin búsqueda. La única navegación es saltar a la primera letra de un nombre para mostrar.
- Sin filtrado. No hay forma de preguntar muéstrame lo que está configurado para iniciarse automáticamente y no se está ejecutando.
- Una fila cada vez. Reiniciar doce servicios son doce clics derechos y doce esperas.
- "Deteniendo..." para siempre, sin más salida que el Administrador de tareas y adivinar el proceso.
- Sin historial. Nadie sabe quién puso ese tipo de inicio en Deshabilitado, ni cuándo.
- Datos ocultos. El proceso, los desencadenadores, los privilegios, el descriptor de seguridad, quién firmó el ejecutable: todo ello exige
sc.exede memoria, o el Registro. - Sin paridad en la línea de comandos.
sc.exetiene una sintaxis de los noventa, y elGet-Serviceque viene con Windows, en Windows PowerShell 5.1, no muestra la cuenta con la que se ejecuta un servicio, y mucho menos su descripción. PowerShell 7 muestra ambas y se instala por separado.
Las demás herramientas arreglan cada una una parte
Process Hacker y System Informer muestran una lista rica y pueden terminar un proceso a la fuerza, pero no tienen auditoría ni línea de comandos. sc.exe y PsService pueden hacerlo todo y no le dicen nada. Los cmdlets *-Service de PowerShell son programables y superficiales.
Nadie combina una lista en la que buscar, una vista previa antes de cada cambio y un registro de lo que cambió con el tiempo, y ese registro es la razón para conservar esta herramienta en un equipo pasada la primera tarde.
La comparación completaUna ventana y una línea de comandos sobre un único motor
Preguntar, en lugar de desplazarse
start:auto !status:running significa lo que debería estar en marcha y no lo está. Un único lenguaje, en el cuadro de búsqueda y en bws list --query, con los campos sugeridos mientras escribe.
Mostrar el plan antes de que ocurra nada
Cada detención, inicio, reinicio y cambio de tipo de inicio se previsualiza con los servicios que arrastra consigo, y la vista previa es lo que se ejecuta.
Decirle qué se desvió y quién lo cambió
bws snapshot create congela el equipo en un archivo y bws snapshot diff dice qué cambió desde entonces, la configuración aparte de lo que simplemente se inició o se detuvo. bws history dice, a partir del registro del sistema, quién cambió un tipo de inicio y quién instaló un servicio. La ventana hace las tres cosas en Audit....
Arreglar un problema común con un clic
La pestaña Tools y bws tool fix reinician el servicio que hay detrás de una impresora que no imprime, un sonido que ha desaparecido o una búsqueda atascada, junto con lo que depende de él, mediante el mismo plan que todo lo demás.
Detener un servicio que no se detiene
Primero pide amablemente y termina el proceso solo si eso falla, nombrando cada otro servicio que vive en él.
Mostrar lo que services.msc oculta
Quién firmó el ejecutable y si Windows confía en él, desencadenadores, privilegios, el descriptor de seguridad, el proceso y su memoria. Como columnas y como criterios de búsqueda.
Avisar cuando no pudo leer algo
Un campo que no pudo leer se informa como no leído, nunca se muestra como vacío. Una instantánea tomada sin derechos de administrador lo dice dentro del propio archivo.
Encajar en los scripts
--json en cada comando, un código de salida para cada final y 5 cuando una comparación encuentra deriva.
Ejecutarse desde un solo archivo, sin conexión
Descomprima y ejecute, o instálelo para todo el equipo. Sin .NET que instalar, y nunca se conecta a Internet. Consultar no requiere derechos de administrador. GPL-3.0.
Qué cambió desde ayer
Una instantánea es el equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento, el hash y el firmante de su archivo, sus dependencias, desencadenadores, privilegios y descriptor de seguridad. Es JSON con un campo por línea, así que cabe en un repositorio y git diff lo lee.
$ bws snapshot diff before.json --live --exit-code
Changed (2):
Spooler Print Spooler
startType: Manual -> Automatic
status: Stopped -> Running (running state, not configuration)
wlidsvc Microsoft Account Sign-in Assistant
status: Stopped -> Running (running state, not configuration)
Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
- La configuración y el estado de ejecución se informan por separado. Dos instantáneas tomadas con un día de diferencia difieren en lo que casualmente está en marcha, y casi nada de eso es deriva: el tipo de inicio que cambió es la línea que hay que leer.
- Lo que no pudo compararse se lista, no se oculta. Un campo que una instantánea nunca leyó sale como not compared, de modo que una comparación que dice nada cambió significa que nada cambió en lo que ambos lados podían ver.
--exit-codetermina con5cuando la configuración difiere, de modo que una tarea programada puede tomar una instantánea en el despliegue y avisar a alguien la primera noche que el equipo se desvíe.- Dos equipos, dos archivos. Tome una instantánea en preproducción y otra en producción, y compárelas en cualquier parte.
La vista previa es la ejecución
Toda operación que escribe construye primero un plan, y ese mismo plan es la vista previa, la cascada de servicios dependientes, el rechazo antes de que pulse nada, la línea de comandos que pide lo mismo y el camino de vuelta después.
$ bws stop Winmgmt --dry-run --dependents
Plan: stop Winmgmt (2 steps)
1. stop vmms (would break otherwise)
2. stop Winmgmt (asked for)
Warnings:
- Stopping Winmgmt also stops one other entry: vmms
- Winmgmt starts automatically, so it will be back after the next restart.
- Ejecútelo sin
--dry-runy esos son los pasos, en ese orden, con las mismas razones al lado. No hay un segundo camino de código para la ejecución real. - Lo que cae con él está en el plan. Los servicios que dejarían de funcionar son pasos propios, y un plan que derribaría algo que el equipo necesita lo dice en sus advertencias.
- Un rechazo llega antes del botón. Un controlador, un servicio para el que el administrador no acepta una detención, un proceso que el sistema protege: se rechazan al construir el plan, con la razón. La ventana atenúa el botón y dice por qué a su lado.
- La detención forzada son dos pasos, y el segundo es condicional.
bws killpide al servicio que se detenga y termina su proceso solo si eso no funciona, nombrando cada otro servicio que vive en él.
Desde la línea de comandos
El mismo motor que la ventana, para scripts, tareas programadas e integración continua. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.
bws list --query "start:auto !status:running" lo que debería estar en marcha y no lo está
bws list --query "file:missing" servicios cuyo ejecutable ha desaparecido
bws list --query "signed:no peruser:no" sin firmar, sin las copias por sesión
bws show Spooler todo lo que se sabe de una entrada
bws stop Winmgmt --dry-run --dependents lo que arrastraría detenerlo
bws kill Spooler --dry-run lo que se llevaría terminar su proceso
bws start-type Spooler manual --dry-run lo que haría quitarlo del inicio automático
bws snapshot create before.json congelar el equipo antes de un cambio
bws snapshot diff before.json --live --exit-code qué ha cambiado desde entonces, 5 si la configuración cambió
bws history Spooler quién cambió su tipo de inicio, y cuándo
bws tool fix printer --dry-run lo que haría la reparación rápida de una impresora atascada
Cada comando, opción y código de salida
Descomprima y ejecute, o instale
Windows 10 1809 o Windows Server 2019 y posteriores, de 64 bits. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Cambiar cualquier cosa exige una sesión con privilegios elevados, y ambas mitades lo dicen en lugar de fallar en silencio: la ventana ofrece Restart as admin.
| Archivo | Qué es |
|---|---|
BetterWindowsServices-win-x64.zip | La ventana, un ejecutable autónomo: sin .NET que instalar |
bws-cli-win-x64.zip | La línea de comandos, un ejecutable autónomo, para scripts e integración continua |
BetterWindowsServices-win-x64.msi | El instalador: ambos programas para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH |
Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.

