Položte stroji otázku
Jeden jazyk, ve vyhledávacím poli okna i v bws list --query. Samotné slovo hledá v názvu, zobrazovaném názvu, účtu a cestě ke spuštění. Pole ho zúží. 21 polí a stejný text znamená v obou polovinách nástroje totéž.
Šest, které odpovídají na skutečnou otázku
Co by mělo běžet a neběží
start:auto !status:running
První dotaz, který většina lidí napíše, a ten, na který services.msc neumí odpovědět vůbec.
Služby, jejichž soubor je pryč
file:missing
Položka ukazující na spustitelný soubor, který na disku není. Obvykle odinstalace, která po sobě nechala registraci.
Nepodepsané, bez šumu z relací
signed:no peruser:no
Rodiny pro jednotlivé uživatele vytvářejí kopii pro každou relaci a plní seznam téměř duplikáty. Tohle se ptá na zbytek.
Běží, ačkoli je zakázáno
mismatch:running
Konfigurace a stav, které si odporují - položka, kterou má správce nastavenou, aby se nikdy nespustila, a přesto běží.
Cokoli, co žádá o práva ladění
privilege:SeDebugPrivilege
Privilegium, které procesu umožňuje otevřít jakýkoli jiný. Stojí za to vědět, které služby o něj žádají.
Co nástroj nemohl přečíst
account:?
Položky, u kterých tato relace nemohla přečíst účet. Otázka, kterou services.msc neumí ani položit.
Jak se dotaz píše
Termíny
- Termíny se oddělují mezerami a musí platit všechny - klíčové slovo
andneexistuje, protože by nemohlo znamenat nic jiného. - Totéž pole napsané dvakrát je jediná výjimka:
status:running status:stoppedznamená jedno nebo druhé, protože přesně to zapíše zaškrtnutí dvou filtrů. Dvě meze čísla stále zužují -pid:>1000 pid:<2000je rozsah mezi nimi. !před termínem ho neguje:!status:running. V dávkovém souboru ssetlocal EnableDelayedExpansioncmd tento!beze slova sní a dotaz pak tiše znamená něco jiného - tam napište^!uvnitř uvozovek.- Čárka uvnitř pole je nebo:
start:manual,disabled. - Uvozovky chrání vše s mezerami nebo dvojtečkami:
account:"NT SERVICE\McmSvc". - Cesta vložená tak, jak je -
C:\Windows\System32\svchost.exe- se hledá, ne čte jako pole s názvem C.
Jak se porovnává text
name:spoolodpovídá všemu, co to obsahuje - výchozí chování, protože to lidé od vyhledávacího pole čekají.name:=spoolerje přesná shoda.name:spool*bere zástupné znaky,*a?.name:/^Sql.*/je regulární výraz a mezi lomítky se píše tak, jak se regulární výrazy píší:\?,\\a čárka tam znamenají to, co tam znamenají. Lomítko, které se nikdy nezavře, je chyba - chcete-li hledat samotné lomítko, napište\/nebo použijte uvozovky.- Velikost písmen se ignoruje, i mimo ASCII - zobrazovaný název v polštině nebo řečtině odpovídá, ať je napsán jakkoli.
Tři slova, která přijímá každé pole
any- hodnota existuje, ať je jakákolinone- opravdu žádná hodnota není - položka žádnou nemá?- nástroj toto pole nemohl přečíst nebo ho nepřečetl, což je otázka, kterouservices.mscneumí ani položit
Špatně napsaná hodnota je chyba, nikdy prázdný výsledek. status:runing odpoví Did you mean running? a skončí kódem 2. Prázdný seznam by vypadal jako odpověď a rozdíl mezi "nic neodpovídá" a "napsali jste to špatně" je rozdíl mezi čistým strojem a auditem, který nic neprokázal. Dotaz, který by nic nezúžil, se odmítne i na příkazovém řádku, takže skript neoperuje s celým strojem kvůli překlepu.
Další příklady
Každý funguje stejně ve vyhledávacím poli okna i za bws list --query a každý byl před napsáním sem spuštěn na skutečném Windows. Co najde, závisí na stroji - a u otázky na potíže je prázdná odpověď ta, kterou chcete.
Stav a typ spouštění
| Dotaz | Co najde |
|---|---|
status:stopPending, | Zaseklé při zastavování nebo spouštění - čekání, které snap-in ukazuje a které nikdy neskončí. |
start:auto status:stopped trigger:none | Nastaveno na automatické spuštění, zastaveno a nečeká na trigger - krátký seznam, který stojí za přečtení po restartu. |
start:delayed | Automatické, spuštěné o něco později než ostatní automatické položky. |
start:manual, | Běží, ačkoli ji při startu nic nespouští - něco o ni požádalo, spustil ji trigger, nebo někdo. |
Účty
| Dotaz | Co najde |
|---|---|
account:localsystem !publisher:microsoft | Běží jako LocalSystem, nejsilnější účet, ze souboru, který Microsoft nepodepsal. Dotaz na vydavatele čte podpisy sám, takže trvá pár sekund. |
!account:localsystem, | Služby běžící pod jakýmkoli jiným účtem - virtuálním, spravovaným nebo osobním. |
account:"NT SERVICE" | Virtuální účet služby samotné. Uvozovky drží slova pohromadě kvůli mezeře. |
Soubory a podpisy
| Dotaz | Co najde |
|---|---|
signed:notSigned, | Bez podpisu, řetězec, kterému Windows nedůvěřuje, nebo soubor změněný po podepsání. |
signed:trusted !publisher:microsoft | Podepsané, důvěryhodné a ne od Microsoftu - software, který na tento stroj nainstalovaly jiné firmy. |
type:driver start:boot, | Ovladače načítané při startu Windows, jejichž podpisu Windows nedůvěřuje. Na zdravém stroji žádné. |
!path:C:\Windows type:ownProcess | Služba s vlastním procesem, jejíž soubor leží mimo složku Windows. |
path:\AppData\ | Spouštěno zevnitř něčího profilu, což je poslední místo, kde se služba čeká. |
path:\System32\\ type:ownProcess | Zpětné lomítko před mezerou udělá z mezery součást slova, takže cesta končící zpětným lomítkem se píše se dvěma, pokud za ní následuje další termín. Na konci dotazu stačí jedno. |
Triggery a závislosti
| Dotaz | Co najde |
|---|---|
trigger:device status:stopped | Čeká na příchod zařízení, takže je zastavená z důvodu. |
trigger:network | Spouštěno, když požadavek dorazí na síťový koncový bod - port, pojmenovanou rouru nebo rozhraní RPC. |
trigger:stop | Položky, které trigger umí i zastavit, ne jen spustit. |
dependson:Winmgmt | Položky, které ke svému běhu potřebují WMI. |
requiredby:Spooler | Všechno, co Print Spooler potřebuje ke svému běhu, a co zase potřebují ty. |
Privilegia a procesy
| Dotaz | Co najde |
|---|---|
privilege:SeTcbPrivilege | Žádá o jednání jako součást operačního systému. |
privilege:SeImpersonatePrivilege !account:localsystem | Může jednat jménem klienta a přitom běžet pod jiným účtem než LocalSystem. |
sidtype:unrestricted | Nese vlastní SID služby ve svém procesu, takže jej oprávnění mohou pojmenovat samostatně. sidtype:restricted se ptá na ty, jejichž proces je navíc omezen pro zápis. |
type:sharedProcess status:running | Běží uvnitř sdíleného svchost spolu s dalšími. |
memory:>200MB | Proces využívající více než 200 MB. Paměť se čte sama, když se na ni dotaz ptá. |
pid:1000-2000 | V procesu, jehož id leží mezi 1000 a 2000. |
Názvy a text
| Dotaz | Co najde |
|---|---|
spool | Samotné slovo, hledané v názvu, zobrazovaném názvu, účtu a cestě ke spuštění. |
name:=wuauserv | Přesně tento název a nic, co jej jen obsahuje. |
name:win* | Názvy začínající na win, zapsané se zástupným znakem. |
name:/svc$/ | Názvy končící na svc, zapsané jako regulární výraz. |
description:none | Žádný popis vůbec, což platí pro většinu ovladačů. |
description:? | Popis, který Windows nedokázal vydat, obvykle proto, že ukazuje na jazykový soubor, který neexistuje. |
peruser:template | Šablony pro jednotlivé uživatele, které Windows kopíruje pro každou přihlášenou relaci. |
Každé pole
Sestaveno ze samotného programu, takže tato tabulka se nemůže rozejít s tím, co nástroj přijímá. Pole bez seznamu hodnot bere text, číslo nebo velikost - třetí sloupec říká které.
| Pole | Ptá se na | Hodnoty |
|---|---|---|
name | název služby, podle kterého ji Windows identifikuje | text |
display | zobrazovaný název, tak jak ho tento Windows píše | text |
description | co položka říká sama o sobě | text |
type | o jaký druh položky jde | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | zda jde o jednu z rodin pro jednotlivé uživatele, jejichž kopii Windows vytváří pro každou relaci | yes, no, template, instance |
status | co právě dělá | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | co s ní správce udělá při příštím startu | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | účet, pod kterým běží, tak jak ho správce píše | text, např. localsystem |
pid | proces, ve kterém běží | číslo: 1234, >1000, 100-200 |
trigger | podmínka, která ji spouští nebo zastavuje | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | příkazový řádek, který správce spouští | text |
file | zda soubor, který spouští, je na disku | present, missing |
signed | co si Windows myslí o podpisu souboru, bez kontroly odvolání | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | kdo soubor podepsal - prokázáno jen důvěryhodným podpisem | text |
privilege | privilegium, o které položka žádá | text, např. SeDebugPrivilege |
dependson | co tato položka potřebuje | název služby |
requiredby | co se rozbije, když se tato zastaví | název služby |
sidtype | typ SID služby | unrestricted, restricted, unknown |
sddl | popisovač zabezpečení jako text | text |
memory | co používá její proces | velikost s jednotkou: 500MB, >1GB, 100MB-1GB |
mismatch | konfigurace a stav, které si odporují | stopped, running |
Dvě věci, které stojí za to znát
Některá pole jsou drahá a dotaz na ně zapne čtení
Podpisy trvají na celém stroji několik sekund a paměť je měření, ne nastavení, takže ani jedno se pro výpis nečte, pokud se o to nepožádá. Dotaz, který jedno z nich zmiňuje, zapne toto čtení sám - nemusíte si pamatovat --signatures navíc k signed:no. V okně dotaz na podpisy říká, že odpověď je neúplná, dokud nedorazí, místo aby ukázal kratší seznam, jako by byl odpovědí.
Výsledek posouzený podle něčeho nečitelného to říká
Pokud byly položky posuzovány podle pole, které tato relace nemohla přečíst, nese výsledek řádek s udáním kolika - protože takový výsledek může některé položky postrádat nebo obsahovat takové, které do něj nepatří. To je totéž pravidlo, které dodržuje celý nástroj: neúspěšné čtení je vidět v odpovědi, nikdy se nepohltí. Vydavatel dostane stejné zacházení, když ho tvrdí jen certifikát: vedle jakéhokoli verdiktu jiného než trusted se název ukáže jako not verified a publisher: počítá položku jako nejistou na vlastním řádku - takže !publisher:microsoft ponechá soubor Microsoftu, který někdo po podepsání změnil.