اسأل الجهاز سؤالًا
لغة واحدة، في مربع بحث النافذة وفي 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 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 |
شيئان يستحقان أن تعرفهما
بعض الحقول مكلفة، وطلبها يشغّل القراءة
قراءة التوقيعات تستغرق عدة ثوانٍ على جهاز كامل، والذاكرة قياس وليست إعدادًا، فلا يُقرأ أيٌّ منهما للقائمة ما لم يُطلب. والاستعلام الذي يذكر أحدهما يشغّل تلك القراءة من تلقاء نفسه، فلا داعي لأن تتذكر --signatures مع signed:no. وفي النافذة يقول الاستعلام عن التوقيعات إن الجواب غير مكتمل إلى أن تصل، بدل أن يعرض قائمة أقصر كأنها الجواب.
النتيجة التي حُكم فيها على شيء غير مقروء تقول ذلك
إذا حُكم على عناصر بناءً على حقل تعذرت على هذه الجلسة قراءته، فإن النتيجة تحمل سطرًا يذكر كم عنصرًا، لأن نتيجة كهذه قد تنقصها عناصر، أو تضم عناصر لا تنتمي إليها. وهذه القاعدة نفسها التي تلتزم بها الأداة كلها: القراءة الفاشلة ظاهرة في الجواب، ولا تُبتلع أبدًا. والناشر يعامل المعاملة نفسها حين لا تدّعيه إلا الشهادة: بجانب أي حكم غير trusted يُعرض الاسم على أنه not verified، ويحتسب publisher: العنصر غير مؤكَّد في سطر مستقل، فيُبقي !publisher:microsoft على ملف من Microsoft غيّره أحدهم بعد توقيعه.