ถามเครื่องหนึ่งคำถาม
ภาษาเดียว ทั้งในช่องค้นหาของหน้าต่างและใน bws list --query คำเดี่ยวๆ จะค้นหาในชื่อ ชื่อที่แสดง บัญชี และพาธการเปิดใช้งาน ฟิลด์ช่วยจำกัดให้แคบลง 21 ฟิลด์ และข้อความเดียวกันมีความหมายเดียวกันในทั้งสองส่วนของเครื่องมือ
หกคิวรีที่ตอบคำถามจริง
อะไรที่ควรทำงานแต่ไม่ได้ทำงาน
start:auto !status:running
คิวรีแรกที่คนส่วนใหญ่เขียน และเป็นคิวรีที่ services.msc ตอบไม่ได้เลย
บริการที่ไฟล์หายไป
file:missing
รายการที่ชี้ไปยังไฟล์ปฏิบัติการที่ไม่อยู่บนดิสก์ มักเกิดจากการถอนการติดตั้งที่ทิ้งการลงทะเบียนไว้
ไม่มีลายเซ็น และไม่มีสัญญาณรบกวนจากเซสชัน
signed:no peruser:no
ตระกูลต่อผู้ใช้สร้างสำเนาต่อเซสชันและทำให้รายชื่อเต็มไปด้วยรายการที่เกือบซ้ำกัน คิวรีนี้ถามเฉพาะส่วนที่เหลือ
ทำงานทั้งที่ปิดใช้งาน
mismatch:running
การกำหนดค่าและสถานะขัดแย้งกัน รายการที่ตัวจัดการตั้งไว้ไม่ให้เริ่มเลย แต่ทำงานอยู่
อะไรก็ตามที่ขอสิทธิ์ดีบัก
privilege:SeDebugPrivilege
สิทธิพิเศษที่ให้กระบวนการเปิดกระบวนการอื่นได้ทุกตัว ควรรู้ว่าบริการไหนขอมัน
สิ่งที่เครื่องมืออ่านไม่ได้
account:?
รายการที่เซสชันนี้อ่านบัญชีไม่ได้ เป็นคำถามที่ services.msc ถามไม่ได้ด้วยซ้ำ
เขียนคิวรีอย่างไร
คำค้น
- คำค้นคั่นด้วยช่องว่างและต้องตรงทุกคำ ไม่มีคีย์เวิร์ด
andเพราะมันไม่มีความหมายอื่นที่เป็นไปได้ - ฟิลด์เดียวกันที่เขียนสองครั้งเป็นข้อยกเว้นเดียว:
status:running status:stoppedหมายถึงอย่างใดอย่างหนึ่ง เพราะนั่นคือสิ่งที่การติ๊กตัวกรองสองตัวเขียนออกมา ขอบเขตสองด้านของตัวเลขยังคงจำกัดให้แคบลงpid:>1000 pid:<2000คือช่วงระหว่างทั้งสอง !หน้าคำค้นทำให้เป็นนิเสธ:!status:runningในไฟล์แบตช์ที่มีsetlocal EnableDelayedExpansioncmd จะกิน!นั้นโดยไม่บอกอะไร และคิวรีก็มีความหมายอื่นไปเงียบๆ ให้เขียน^!ภายในเครื่องหมายคำพูดตรงนั้น- เครื่องหมายจุลภาคภายในฟิลด์คือ หรือ:
start:manual,disabled - เครื่องหมายคำพูดปกป้องสิ่งที่มีช่องว่างหรือเครื่องหมายทวิภาค:
account:"NT SERVICE\McmSvc" - พาธที่วางมาตามที่เป็น
C:\Windows\System32\svchost.exeจะถูกค้นหา ไม่ถูกอ่านเป็นฟิลด์ชื่อ C
ข้อความจับคู่อย่างไร
name:spoolตรงกับทุกอย่างที่ มี คำนั้น เป็นค่าเริ่มต้น เพราะเป็นสิ่งที่คนคาดหวังจากช่องค้นหาname:=spoolerคือตรงทั้งหมดname:spool*รับไวลด์การ์ด*และ?name:/^Sql.*/คือนิพจน์ปกติ และภายในเครื่องหมายทับเขียนตามแบบของนิพจน์ปกติ:\?,\\และเครื่องหมายจุลภาคมีความหมายตามที่มันมีในนั้น เครื่องหมายทับที่ไม่ปิดคือข้อผิดพลาด ถ้าจะค้นหาเครื่องหมายทับเอง ให้เขียน\/หรือใช้เครื่องหมายคำพูด- ไม่สนตัวพิมพ์ใหญ่เล็ก รวมถึงนอก ASCII ชื่อที่แสดงภาษาโปแลนด์หรือกรีกตรงกันไม่ว่าจะพิมพ์แบบไหน
สามคำที่ทุกฟิลด์ยอมรับ
any- มีค่า ไม่ว่าค่าอะไรก็ตามnone- ไม่มีค่าจริงๆ รายการนั้นไม่มีค่า?- เครื่องมืออ่านฟิลด์นี้ไม่ได้ หรือยังไม่ได้อ่าน ซึ่งเป็นคำถามที่services.mscถามไม่ได้ด้วยซ้ำ
ค่าที่พิมพ์ผิดคือข้อผิดพลาด ไม่เคยเป็นผลลัพธ์ว่าง status:runing ตอบว่า Did you mean running? และจบด้วยรหัส 2 รายชื่อว่างจะดูเหมือนคำตอบ และความต่างระหว่าง “ไม่มีอะไรตรง” กับ “คุณพิมพ์ผิด” คือความต่างระหว่างเครื่องที่สะอาดกับการตรวจสอบที่ไม่ได้พิสูจน์อะไร คิวรีที่ไม่ทำให้แคบลงเลยจะถูกปฏิเสธบนบรรทัดคำสั่งด้วย สคริปต์จึงไม่ทำงานกับทั้งเครื่องเพราะพิมพ์ผิดตัวเดียว
ตัวอย่างเพิ่มเติม
แต่ละตัวทำงานเหมือนกันในช่องค้นหาของหน้าต่างและหลัง bws list --query และแต่ละตัวถูกรันบน Windows จริงก่อนจะเขียนไว้ที่นี่ สิ่งที่พบขึ้นอยู่กับเครื่อง และสำหรับคำถามเรื่องปัญหา คำตอบที่ว่างคือคำตอบที่คุณต้องการ
สถานะและประเภทการเริ่มต้น
| คิวรี | สิ่งที่พบ |
|---|---|
status:stopPending, | ค้างอยู่ที่กำลังหยุดหรือกำลังเริ่ม การรอที่สแนปอินแสดงและไม่มีวันจบ |
start:auto status:stopped trigger:none | ตั้งให้เริ่มอัตโนมัติ หยุดอยู่ และไม่ได้รอทริกเกอร์ รายชื่อสั้นๆ ที่ควรอ่านหลังรีสตาร์ต |
start:delayed | อัตโนมัติ เริ่มช้ากว่ารายการอัตโนมัติอื่นเล็กน้อย |
start:manual, | ทำงานอยู่ทั้งที่ไม่มีอะไรเริ่มมันตอนบูต มีบางอย่างขอมัน ทริกเกอร์เริ่มมัน หรือมีคนเริ่มมัน |
บัญชี
| คิวรี | สิ่งที่พบ |
|---|---|
account:localsystem !publisher:microsoft | รันเป็น LocalSystem บัญชีที่แรงที่สุด จากไฟล์ที่ Microsoft ไม่ได้ลงลายเซ็น คิวรีเกี่ยวกับผู้เผยแพร่อ่านลายเซ็นเอง จึงใช้เวลาไม่กี่วินาที |
!account:localsystem, | บริการที่รันภายใต้บัญชีอื่นใด บัญชีเสมือน บัญชีที่มีการจัดการ หรือบัญชีของคนใดคนหนึ่งเอง |
account:"NT SERVICE" | บัญชีเสมือนของบริการเอง เครื่องหมายคำพูดรวมคำเข้าด้วยกันเพราะมีช่องว่าง |
ไฟล์และลายเซ็น
| คิวรี | สิ่งที่พบ |
|---|---|
signed:notSigned, | ไม่มีลายเซ็น สายใบรับรองที่ Windows ไม่เชื่อถือ หรือไฟล์ที่ถูกเปลี่ยนหลังลงลายเซ็น |
signed:trusted !publisher:microsoft | ลงลายเซ็น เชื่อถือได้ และไม่ใช่โดย Microsoft ซอฟต์แวร์ที่บริษัทอื่นวางไว้บนเครื่องนี้ |
type:driver start:boot, | ไดรเวอร์ที่โหลดตอน Windows เริ่มซึ่ง Windows ไม่เชื่อถือลายเซ็น บนเครื่องที่แข็งแรงควรไม่มีเลย |
!path:C:\Windows type:ownProcess | บริการที่มีกระบวนการของตัวเองซึ่งไฟล์อยู่นอกโฟลเดอร์ Windows |
path:\AppData\ | เปิดจากภายในโปรไฟล์ของใครสักคน ที่สุดท้ายที่คนคาดว่าจะมีบริการ |
path:\System32\\ type:ownProcess | แบ็กสแลชหน้าช่องว่างทำให้ช่องว่างเป็นส่วนหนึ่งของคำ ดังนั้นพาธที่ลงท้ายด้วยแบ็กสแลชจึงเขียนสองตัวเมื่อมีคำค้นอื่นตามหลัง ที่ท้ายคิวรีหนึ่งตัวก็พอ |
ทริกเกอร์และการพึ่งพา
| คิวรี | สิ่งที่พบ |
|---|---|
trigger:device status:stopped | รอให้อุปกรณ์มาถึง จึงหยุดด้วยเหตุผล |
trigger:network | เริ่มเมื่อมีคำขอมาถึงเอ็นด์พอยต์เครือข่าย พอร์ต named pipe หรืออินเทอร์เฟซ RPC |
trigger:stop | รายการที่ทริกเกอร์หยุดได้ ไม่ใช่แค่เริ่ม |
dependson:Winmgmt | รายการที่ต้องใช้ WMI เพื่อทำงาน |
requiredby:Spooler | ทุกอย่างที่ Print Spooler ต้องใช้เพื่อทำงาน และสิ่งที่สิ่งเหล่านั้นต้องใช้ต่อกันไป |
สิทธิพิเศษและกระบวนการ
| คิวรี | สิ่งที่พบ |
|---|---|
privilege:SeTcbPrivilege | ขอทำงานเป็นส่วนหนึ่งของระบบปฏิบัติการ |
privilege:SeImpersonatePrivilege !account:localsystem | ทำงานแทนไคลเอนต์ได้ขณะรันภายใต้บัญชีอื่นที่ไม่ใช่ LocalSystem |
sidtype:unrestricted | มี service SID ของตัวเองในกระบวนการ สิทธิ์จึงระบุชื่อมันตัวเดียวได้ sidtype:restricted ถามถึงรายการที่กระบวนการถูกจำกัดการเขียนด้วย |
type:sharedProcess status:running | ทำงานอยู่ใน svchost ที่ใช้ร่วมกัน พร้อมรายการอื่น |
memory:>200MB | กระบวนการที่ใช้มากกว่า 200 MB หน่วยความจำจะถูกอ่านเองเมื่อคิวรีถามถึงมัน |
pid:1000-2000 | อยู่ในกระบวนการที่ id อยู่ระหว่าง 1000 ถึง 2000 |
ชื่อและข้อความ
| คิวรี | สิ่งที่พบ |
|---|---|
spool | คำเดี่ยวๆ ค้นหาในชื่อ ชื่อที่แสดง บัญชี และพาธการเปิดใช้งาน |
name:=wuauserv | ชื่อนี้ตรงทั้งหมด และไม่มีอะไรที่แค่มีมันอยู่ข้างใน |
name:win* | ชื่อที่ขึ้นต้นด้วย win เขียนด้วยไวลด์การ์ด |
name:/svc$/ | ชื่อที่ลงท้ายด้วย svc เขียนเป็นนิพจน์ปกติ |
description:none | ไม่มีคำอธิบายเลย ซึ่งคือไดรเวอร์ส่วนใหญ่ |
description:? | คำอธิบายที่ Windows ส่งมาให้ไม่ได้ มักเพราะชี้ไปที่ไฟล์ภาษาที่ไม่อยู่ |
peruser:template | แม่แบบต่อผู้ใช้ที่ Windows คัดลอกสำหรับแต่ละเซสชันที่ลงชื่อเข้าใช้ |
ทุกฟิลด์
สร้างจากโปรแกรมเอง ตารางนี้จึงไม่มีทางห่างจากสิ่งที่เครื่องมือยอมรับ ฟิลด์ที่ไม่มีรายการค่าจะรับข้อความ ตัวเลข หรือขนาด คอลัมน์ที่สามบอกว่าอย่างไหน
| ฟิลด์ | ถามเกี่ยวกับ | ค่า |
|---|---|---|
name | ชื่อบริการ ชื่อที่ Windows ใช้ระบุมัน | ข้อความ |
display | ชื่อที่แสดง ตามที่ Windows เครื่องนี้สะกด | ข้อความ |
description | สิ่งที่รายการบอกเกี่ยวกับตัวเอง | ข้อความ |
type | รายการนี้เป็นชนิดไหน | driver, kernelDriver, fileSystemDriver, ownProcess, sharedProcess, unknown |
peruser | ใช่หรือไม่ที่เป็นหนึ่งในตระกูลต่อผู้ใช้ซึ่ง Windows สร้างสำเนาต่อเซสชัน | yes, no, template, instance |
status | ตอนนี้กำลังทำอะไรอยู่ | running, stopped, paused, pending, startPending, stopPending, pausePending, continuePending, unknown |
start | ตัวจัดการทำอะไรกับมันตอนบูตครั้งถัดไป | automatic, auto, delayed, manual, disabled, boot, system, unknown |
account | บัญชีที่มันรัน ตามที่ตัวจัดการสะกด | ข้อความ เช่น localsystem |
pid | กระบวนการที่มันรันอยู่ | ตัวเลข: 1234, >1000, 100-200 |
trigger | เงื่อนไขที่เริ่มหรือหยุดมัน | device, ip, domain, firewall, policy, network, custom, state, aggregate, unknown, start, stop |
path | บรรทัดคำสั่งที่ตัวจัดการเรียกใช้ | ข้อความ |
file | ไฟล์ที่มันรันอยู่บนดิสก์หรือไม่ | present, missing |
signed | Windows คิดอย่างไรกับลายเซ็นของไฟล์ โดยไม่ตรวจการเพิกถอน | yes, no, trusted, notSigned, untrustedRoot, expired, revoked, tampered, unknown |
publisher | ใครลงลายเซ็นไฟล์ พิสูจน์ได้ด้วยลายเซ็นที่เชื่อถือได้เท่านั้น | ข้อความ |
privilege | สิทธิพิเศษที่รายการขอ | ข้อความ เช่น SeDebugPrivilege |
dependson | สิ่งที่รายการนี้ต้องการ | ชื่อบริการ |
requiredby | สิ่งที่เสียหายถ้ารายการนี้หยุด | ชื่อบริการ |
sidtype | ประเภท SID ของบริการ | unrestricted, restricted, unknown |
sddl | security descriptor ในรูปแบบข้อความ | ข้อความ |
memory | สิ่งที่กระบวนการของมันใช้อยู่ | ขนาดพร้อมหน่วย: 500MB, >1GB, 100MB-1GB |
mismatch | การกำหนดค่าและสถานะที่ขัดแย้งกัน | stopped, running |
สองเรื่องที่ควรรู้
บางฟิลด์แพง และการถามถึงมันจะเปิดการอ่าน
ลายเซ็นใช้เวลาหลายวินาทีทั้งเครื่อง และหน่วยความจำเป็นการวัดไม่ใช่การตั้งค่า จึงไม่อ่านทั้งสองสำหรับรายชื่อเว้นแต่จะขอ คิวรีที่กล่าวถึงอย่างใดอย่างหนึ่งจะเปิดการอ่านนั้นเอง คุณไม่ต้องจำ --signatures เพิ่มจาก signed:no ในหน้าต่าง คิวรีเกี่ยวกับลายเซ็นจะบอกว่าคำตอบยังไม่ครบจนกว่าลายเซ็นจะมาถึง แทนที่จะแสดงรายชื่อที่สั้นลงราวกับเป็นคำตอบ
ผลลัพธ์ที่ตัดสินจากสิ่งที่อ่านไม่ได้จะบอกไว้
ถ้ารายการถูกตัดสินจากฟิลด์ที่เซสชันนี้อ่านไม่ได้ ผลลัพธ์จะมีบรรทัดบอกว่ากี่รายการ เพราะผลลัพธ์แบบนั้นอาจขาดรายการหรือมีรายการที่ไม่ควรอยู่ นั่นคือกฎเดียวกับที่ทั้งเครื่องมือยึดถือ การอ่านที่ไม่สำเร็จมองเห็นได้ในคำตอบ ไม่เคยถูกกลืนหาย ผู้เผยแพร่ได้รับการปฏิบัติแบบเดียวกันเมื่อมีเพียงใบรับรองที่อ้างมัน ข้างคำตัดสินใดที่ไม่ใช่ trusted ชื่อจะแสดงเป็น not verified และ publisher: นับรายการนั้นว่าไม่แน่ใจในบรรทัดของตัวเอง ดังนั้น !publisher:microsoft จึงเก็บไฟล์ Microsoft ที่มีคนเปลี่ยนหลังลงลายเซ็นไว้