應該執行哪些服務?
誠實的回答是沒人能告訴你,而每一份聲稱能告訴你的清單,描述的都是另一台不是你的電腦。能夠回答的是一個更窄、也有用得多的問題:這台電腦上有什麼對不上,以及與它正常運作時相比有什麼不同。
為什麼籠統的問題沒有答案
- 這套服務因 Windows 版本、版次和角色而異。網域控制站、筆記型電腦和容器主機在幾乎所有事情上都不一致,為其中一種寫的清單對其他幾種就是錯的。
- 已安裝的內容有一半並非來自 Windows。驅動程式、代理程式、更新服務、授權常駐程式:每一個都是被某樣東西放在那裡的,而沒有任何通用清單知道是什麼。
- 大多數服務本來就應該是停止的。現代 Windows 只啟動它所登錄內容的一小部分:其餘的在等待觸發程序,例如裝置到達、連接埠開啟、加入網域,對它們來說停止才是正確的狀態。
- 「為了效能停用這些」的清單是電腦出問題的原因。看起來閒置的服務,往往正是別的東西依需求啟動的那個,故障會在一週後出現在毫不相干的地方。
確實有答案的問題
應該執行卻沒有執行的內容
start:auto !status:running
Windows 被告知要啟動這些服務,而它們沒有在執行。在健康的電腦上這是一份很短的清單:幾個啟動較晚、隨後又停止的項目。其他任何內容都值得看一眼。
已停用卻仍在執行的內容
mismatch:running
組態與狀態不一致。通常是有人停用了它卻沒有停止它,下一次重新啟動會帶來意外。
指向已遺失檔案的內容
file:missing
解除安裝後遺留了登錄資訊。在有東西嘗試啟動它之前是無害的,也是關於這台電腦上曾經有過什麼的線索。
沒人簽章的內容
signed:no peruser:no
它本身不能證明任何事,卻是開始閱讀的合適起點。第二個搜尋詞會去掉依使用者的服務族,否則它們會讓清單裡充滿近似重複的項目。
要求最強特殊權限的內容
privilege:SeDebugPrivilege
一種讓處理程序能夠開啟任何其他處理程序的特殊權限。少數合法的服務會要求它,值得知道你的電腦上是哪幾個。
正在等待觸發程序的內容
trigger:any status:stopped
它們處於停止狀態,是因為還沒有東西要求它們,而不是因為出了什麼問題。知道這些是哪些,就是讓第一份清單不再令人擔憂的辦法。
勝過所有這些的那一個
詢問電腦本身,在它正常運作的時候。
在電腦投入使用的那一天產生一個快照。這樣,這個應該執行嗎就變成了在一切正常時,這個在執行嗎:一個關於你的電腦的問題,而不是關於一篇文章裡那台電腦的問題。
bws snapshot create C:\baselines\web01.json --note "after the build"
# ... 一週、一次修補程式或一次事件之後
bws snapshot diff C:\baselines\web01.json --live
組態與執行狀態分開回報,所以答案不是四十個恰好在執行的服務,而是某人變更過的啟動類型。
稽核電腦的漂移在停止任何東西之前
這個工具中的每一次停止都會先展示它的計畫:各個步驟、隨之關閉的內容,以及當其中之一是電腦離不開的東西時的警告。這樣的清單是一份七項的入門清單:RPC 的兩個部分和 DCOM 啟動器、帳戶管理員、金鑰隔離、工作階段管理員以及隨插即用,其中沒有遠端桌面,所以透過遠端工作階段操作時,請閱讀計畫。