मशीन से सवाल पूछें
एक भाषा, विंडो के खोज बॉक्स में भी और bws list --query में भी। अकेला शब्द नाम, प्रदर्शन नाम, खाते और लॉन्च पथ में खोजता है। फ़ील्ड उसे सीमित करता है। 21 फ़ील्ड, और टूल के दोनों हिस्सों में एक ही पाठ का एक ही मतलब होता है।
छह जो एक असली सवाल का जवाब देते हैं
जो चालू होना चाहिए और नहीं है
start:auto !status:running
ज़्यादातर लोग जो पहली क्वेरी लिखते हैं, और जिसका जवाब services.msc बिल्कुल नहीं दे सकता।
वे सेवाएँ जिनकी फ़ाइल गायब है
file:missing
ऐसी प्रविष्टि जो डिस्क पर मौजूद न रहने वाली बाइनरी की ओर इशारा करती है। आमतौर पर वह अनइंस्टॉल जिसने रजिस्ट्रेशन पीछे छोड़ दिया।
बिना हस्ताक्षर वाली, सत्र के शोर के बिना
signed:no peruser:no
प्रति-उपयोगकर्ता परिवार हर सत्र के लिए एक प्रति बनाते हैं और सूची को लगभग-एक-जैसी प्रविष्टियों से भर देते हैं। यह बाकी के बारे में पूछता है।
Disabled होने के बावजूद चल रही
mismatch:running
कॉन्फ़िगरेशन और स्थिति जो आपस में मेल नहीं खातीं: ऐसी प्रविष्टि जिसे प्रबंधक कभी शुरू न करने के लिए सेट है, फिर भी चल रही है।
कुछ भी जो डीबग अधिकार माँगता है
privilege:SeDebugPrivilege
एक विशेषाधिकार जो किसी प्रक्रिया को दूसरी किसी भी प्रक्रिया को खोलने देता है। यह जानना ज़रूरी है कि कौन सी सेवाएँ इसे माँगती हैं।
जो टूल पढ़ नहीं सका
account:?
वे प्रविष्टियाँ जिनमें यह सत्र खाता नहीं पढ़ सका। एक ऐसा सवाल जो services.msc पूछ भी नहीं सकता।
क्वेरी कैसे लिखी जाती है
शब्द
- शब्द रिक्त स्थानों से अलग किए जाते हैं और सभी का मेल खाना ज़रूरी है।
andकीवर्ड इसलिए नहीं है कि उसका और कोई मतलब हो ही नहीं सकता। - एक ही फ़ील्ड का दो बार लिखा जाना अकेला अपवाद है:
status:running status:stoppedका मतलब है दोनों में से कोई, क्योंकि दो फ़िल्टर टिक करने पर यही लिखा जाता है। किसी संख्या पर दो सीमाएँ फिर भी दायरा घटाती हैं:pid:>1000 pid:<2000उन दोनों के बीच का दायरा है। - किसी शब्द के आगे
!उसे उलट देता है:!status:running।setlocal EnableDelayedExpansionवाली बैच फ़ाइल में cmd उस!को बिना कुछ कहे खा जाता है और क्वेरी चुपचाप कुछ और मतलब रखने लगती है। वहाँ उद्धरण चिह्नों के अंदर^!लिखें। - फ़ील्ड के अंदर अल्पविराम का मतलब या है:
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, | रुकने या शुरू होने पर अटकी हुई: वह इंतज़ार जो snap-in दिखाता है और जो कभी खत्म नहीं होता। |
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 | तब शुरू होती है जब किसी नेटवर्क एंडपॉइंट पर अनुरोध आता है: पोर्ट, नेम्ड पाइप या RPC इंटरफ़ेस। |
trigger:stop | वे प्रविष्टियाँ जिन्हें कोई ट्रिगर रोक भी सकता है, सिर्फ़ शुरू ही नहीं। |
dependson:Winmgmt | वे प्रविष्टियाँ जिन्हें चलने के लिए WMI चाहिए। |
requiredby:Spooler | वह सब जो Print Spooler को चलने के लिए चाहिए, और बदले में उन्हें क्या चाहिए। |
विशेषाधिकार और प्रक्रियाएँ
| क्वेरी | यह क्या ढूँढता है |
|---|---|
privilege:SeTcbPrivilege | ऑपरेटिंग सिस्टम के हिस्से के रूप में काम करने का अनुरोध करती है। |
privilege:SeImpersonatePrivilege !account:localsystem | LocalSystem के अलावा किसी खाते के अंतर्गत चलते हुए क्लाइंट की ओर से काम कर सकती है। |
sidtype:unrestricted | अपनी प्रक्रिया में अपना एक सेवा SID रखती है, इसलिए अनुमतियाँ उसे अकेले नाम दे सकती हैं। sidtype:restricted उनके लिए पूछता है जिनकी प्रक्रिया लिखने पर भी प्रतिबंधित है। |
type:sharedProcess status:running | साझा svchost के अंदर, दूसरों के साथ चल रही। |
memory:>200MB | ऐसी प्रक्रिया जो 200 MB से ज़्यादा इस्तेमाल करती है। जब क्वेरी मेमोरी के बारे में पूछती है तो मेमोरी अपने आप पढ़ी जाती है। |
pid:1000-2000 | ऐसी प्रक्रिया में जिसकी आईडी 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 |
दो बातें जानने लायक
कुछ फ़ील्ड महँगे हैं, और उन्हें माँगना पढ़ना चालू कर देता है
पूरी मशीन पर हस्ताक्षर पढ़ने में कई सेकंड लगते हैं और मेमोरी एक माप है, सेटिंग नहीं, इसलिए माँगे बिना सूची के लिए इनमें से कुछ नहीं पढ़ा जाता। जो क्वेरी इनमें से किसी का ज़िक्र करती है वह उस पढ़ने को अपने आप चालू कर देती है, इसलिए signed:no के साथ --signatures भी याद रखने की ज़रूरत नहीं। विंडो में हस्ताक्षरों के बारे में क्वेरी कहती है कि जवाब हस्ताक्षर आने तक अधूरा है, छोटी सूची को जवाब की तरह दिखाने के बजाय।
जिस नतीजे का फ़ैसला पढ़ी न जा सकने वाली चीज़ पर हुआ, वह यह बता देता है
यदि प्रविष्टियों का फ़ैसला किसी ऐसे फ़ील्ड पर हुआ जिसे यह सत्र पढ़ नहीं सका, तो नतीजे में एक पंक्ति होती है जो बताती है कितनी, क्योंकि ऐसे नतीजे में प्रविष्टियाँ छूट सकती हैं, या ऐसी प्रविष्टियाँ हो सकती हैं जो वहाँ की नहीं हैं। यही वह नियम है जो पूरा टूल निभाता है: असफल पढ़ना जवाब में दिखता है, कभी निगला नहीं जाता। प्रकाशक के साथ भी यही बर्ताव होता है जब उसका दावा सिर्फ़ प्रमाणपत्र करता है: trusted के अलावा किसी भी फ़ैसले के बगल में नाम not verified के रूप में दिखाया जाता है, और publisher: प्रविष्टि को अपनी एक अलग पंक्ति में अनिश्चित गिनता है, इसलिए !publisher:microsoft उस Microsoft फ़ाइल को रखता है जिसे हस्ताक्षर के बाद किसी ने बदल दिया।