Căutați în serviciile Windows, previzualizați fiecare modificare și vedeți ce a derivat de ieri
Better Windows Services este services.msc reconstruit pentru cei care administrează mașini Windows - o fereastră și o linie de comandă peste același motor. Puneți mașinii o întrebare în loc să derulați opt sute de rânduri. Vedeți ce va face o modificare înainte să apăsați orice. Și ceea ce services.msc nu a avut niciodată: înghețați fiecare serviciu într-un fișier și, peste o săptămână, întrebați ce s-a schimbat.
- Liber și gratuit, GPL-3.0
- Un singur fișier sau un program de instalare
- Nu cere drepturi de administrator pentru a privi
- Nu comunică niciodată cu internetul
bws care cere exact același lucru. Programul vorbește engleza - fereastra citește un fișier de limbă așezat lângă ea, deci o traducere este posibilă fără recompilare.Cum arată în uz
O sesiune reală, pe un Windows instalat în poloneză - numele afișate vin de la Windows, deci sunt în limba lui. Fereastra însăși vorbește engleza.
services.msc aproape că nu s-a schimbat din Windows 2000
Administratorii petrec ore pe săptămână în el, lovindu-se de aceleași ziduri.
- Fără căutare. Singura navigare este saltul la prima literă a unui nume afișat.
- Fără filtrare. Nu există nicio cale de a întreba arată-mi ce este setat să pornească automat și nu rulează.
- Un singur rând pe rând. Repornirea a douăsprezece servicii înseamnă douăsprezece clicuri dreapta și douăsprezece așteptări.
- "Stopping..." la nesfârșit, fără altă ieșire decât Task Manager și ghicitul procesului.
- Fără istoric. Nimeni nu știe cine a setat acel tip de pornire pe Disabled, sau când.
- Date ascunse. Procesul, declanșatoarele, privilegiile, descriptorul de securitate, cine a semnat fișierul executabil - toate cer
sc.exedin memorie sau registrul. - Fără echivalent în linia de comandă.
sc.exeare o sintaxă din anii nouăzeci, iarGet-Servicecare vine cu Windows, în Windows PowerShell 5.1, nu arată contul sub care rulează un serviciu, darămite descrierea lui. PowerShell 7 le arată pe amândouă și se instalează separat.
Celelalte instrumente rezolvă fiecare o parte
Process Hacker și System Informer arată o listă bogată și pot forța încheierea unui proces, dar nu au audit și nici linie de comandă. sc.exe și PsService pot face orice și nu vă spun nimic. Cmdleturile *-Service din PowerShell se pot automatiza și sunt superficiale.
Nimeni nu combină o listă în care se poate căuta, o previzualizare înainte de fiecare modificare și o evidență a ceea ce s-a schimbat în timp - iar evidența este motivul pentru care merită păstrat acest instrument pe o mașină după prima după-amiază.
Comparația completăO fereastră și o linie de comandă peste același motor
Întrebați, în loc să derulați
start:auto !status:running înseamnă ce ar trebui să fie pornit și nu este. Un singur limbaj, în caseta de căutare și în bws list --query, cu câmpurile oferite pe măsură ce tastați.
Arată planul înainte să se întâmple ceva
Fiecare oprire, pornire, repornire și schimbare a tipului de pornire este previzualizată împreună cu serviciile pe care le trage după ea, iar previzualizarea este ceea ce se execută.
Spune ce a derivat și cine a schimbat
bws snapshot create îngheață mașina într-un fișier, iar bws snapshot diff spune ce s-a schimbat de atunci, configurația separat de ceea ce doar a pornit sau s-a oprit. bws history spune, din jurnalul System, cine a schimbat un tip de pornire și cine a instalat un serviciu. Fereastra le face pe toate trei la Audit....
Remediază o problemă frecventă dintr-o apăsare
Fila Tools și bws tool fix repornesc serviciul din spatele unei imprimante care nu tipărește, al sunetului dispărut sau al unei căutări blocate, împreună cu ce depinde de el, prin același plan ca orice altceva.
Oprește un serviciu care nu vrea să se oprească
Cere mai întâi politicos și încheie procesul doar dacă asta eșuează, numind fiecare alt serviciu care trăiește în el.
Arată ce ascunde services.msc
Cine a semnat fișierul executabil și dacă Windows are încredere în el, declanșatoare, privilegii, descriptorul de securitate, procesul și memoria lui. Ca coloane și ca lucruri după care se poate căuta.
Spune când n-a putut citi ceva
Un câmp pe care nu l-a putut citi este raportat ca necitit, niciodată afișat ca gol. Un instantaneu făcut fără drepturi de administrator spune asta în interiorul fișierului.
Se potrivește în scripturi
--json la fiecare comandă, un cod de ieșire pentru fiecare final și 5 când o comparație găsește derivă.
Rulează dintr-un singur fișier, offline
Dezarhivați și rulați sau instalați pentru toată mașina. Fără .NET de instalat și nu comunică niciodată cu internetul. Citirea nu cere drepturi de administrator. GPL-3.0.
Ce s-a schimbat de ieri
Un instantaneu este întreaga mașină la un moment dat - fiecare serviciu și driver, cu tipul de pornire, contul, calea de lansare, hash-ul și semnatarul fișierului, dependențele, declanșatoarele, privilegiile și descriptorul de securitate. Este JSON cu un câmp pe rând, deci poate intra într-un depozit și git diff îl citește.
$ 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.
- Configurația și starea de rulare sunt raportate separat. Două instantanee făcute la o zi distanță diferă prin ce se întâmplă să ruleze și aproape nimic din asta nu este derivă - tipul de pornire care s-a schimbat este rândul de citit.
- Ce nu s-a putut compara este listat, nu ascuns. Un câmp pe care un instantaneu nu l-a citit niciodată iese ca not compared, deci o comparație care spune nimic nu s-a schimbat înseamnă că nimic nu s-a schimbat în ceea ce vedeau ambele părți.
--exit-codese încheie cu5când configurația diferă, astfel încât o sarcină programată poate face un instantaneu la implementare și poate alerta pe cineva în prima noapte în care mașina derivă.- Două mașini, două fișiere. Faceți un instantaneu pe mediul de testare și unul pe producție și comparați-le oriunde.
Previzualizarea este execuția
Fiecare operație care scrie construiește mai întâi un plan, iar același plan este previzualizarea, cascada serviciilor dependente, refuzul înainte să apăsați orice, linia de comandă care cere același lucru și drumul înapoi după aceea.
$ 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.
- Rulați fără
--dry-runși acestea sunt pașii, în această ordine, cu aceleași motive alături. Nu există o a doua cale de cod pentru execuția reală. - Ce cade odată cu el este în plan. Serviciile care s-ar defecta sunt pași de sine stătători, iar un plan care ar doborî ceva de care mașina are nevoie spune asta în avertismente.
- Un refuz vine înaintea butonului. Un driver, un serviciu pentru care managerul nu acceptă o oprire, un proces pe care sistemul îl protejează - refuzat la construirea planului, cu motivul. Fereastra face butonul gri și spune alături de ce.
- Oprirea forțată înseamnă doi pași, iar al doilea este condiționat.
bws killcere serviciului să se oprească și îi încheie procesul doar dacă asta nu funcționează, numind fiecare alt serviciu care trăiește în el.
Din linia de comandă
Același motor ca fereastra, pentru scripturi, sarcini programate și CI. Datele merg la ieșirea standard și tot restul la eroarea standard, deci bws list --json | jq funcționează, iar un avertisment nu ajunge niciodată în JSON-ul dumneavoastră.
bws list --query "start:auto !status:running" ce ar trebui să fie pornit și nu este
bws list --query "file:missing" servicii al căror fișier executabil a dispărut
bws list --query "signed:no peruser:no" nesemnate, fără copiile pe sesiune
bws show Spooler tot ce se știe despre o intrare
bws stop Winmgmt --dry-run --dependents ce ar doborî oprirea lui
bws kill Spooler --dry-run ce ar lua cu sine încheierea procesului lui
bws start-type Spooler manual --dry-run ce ar face scoaterea lui din pornirea automată
bws snapshot create before.json îngheață mașina înainte de o schimbare
bws snapshot diff before.json --live --exit-code ce s-a schimbat de atunci, 5 dacă s-a schimbat configurația
bws history Spooler cine i-a schimbat tipul de pornire și când
bws tool fix printer --dry-run ce ar face remedierea rapidă pentru o imprimantă blocată
Fiecare comandă, opțiune și cod de ieșire
Dezarhivați și rulați, sau instalați
Windows 10 1809 sau Windows Server 2019 și mai noi, pe 64 de biți. Arhivele nu au nevoie de program de instalare și nu scriu nimic în registru, iar privitul nu cere drepturi de administrator. Orice modificare cere o sesiune cu drepturi ridicate, iar ambele jumătăți spun asta în loc să eșueze în tăcere - fereastra oferă Restart as admin.
| Fișier | Ce este |
|---|---|
BetterWindowsServices-win-x64.zip | Fereastra, un singur executabil independent - fără .NET de instalat |
bws-cli-win-x64.zip | Linia de comandă, un singur executabil independent, pentru scripturi și CI |
BetterWindowsServices-win-x64.msi | Programul de instalare: ambele programe pentru fiecare cont de pe mașină, fereastra în meniul Start și bws în PATH |
Executabilele poartă o semnătură Authenticode, așa că Windows numește editorul în loc să avertizeze despre unul necunoscut.

