檢查是什麼東西把 Windows 喚醒的


不知道有多少人在使用電腦的時候,和 Heresy 一樣,是習慣用「休眠」來取代「關機」?Windows 的休眠,基本上是把記憶體裡的資料,全部寫到硬碟裡(以 Winodws 7/8 來說,檔案是「C:\hiberfil.sys」)後,再把電腦關掉;而當要喚醒它的時候,他則會在基本的系統準備就緒後,就去讀取這些存在硬碟裡的資料,如此一來,電腦就可以完美地恢復到休眠前的狀態了!

在 Heresy 來看,休眠有很多好處~
第一,由於系統的程式不需要全部從頭執行,所以速度會比正常開機來的快;
第二,自己處理到一半的工作視窗,也不用關掉,休眠喚醒後就可以繼續使用了!
第三,只要按鍵盤就可喚醒電腦,不用去找主機的電源鈕。

基於這些原因,Heresy 在安裝新電腦、新系統的時候,並沒有考慮近年來很熱門的 SSD,而是選擇繼續用傳統硬碟,搭配休眠來使用。

但是在 Windows 8.1 的環境下,Heresy 卻發現電腦在休眠後,似乎常常會在半夜被自動喚醒!?這點說實話,是很討厭的一件事,所以 Heresy 也認真研究了一下,要怎麼去判斷 Windows 是為什麼被喚醒的。


一般來說,電腦會被喚醒,大多是有使用者的介入,例如鍵盤、滑鼠的操作,都會喚醒電腦。而另外要注意的是,網路卡也有可能因為接收到特定的封包,而把電腦喚醒。

如果希望電腦不要因為這些硬體裝置而被喚醒的話,其實相對還滿簡單的~只要到「裝置管理員」裡面,找到對應的裝置,點兩下開啟他的內容後,找到「電源管理」的分頁,將「允許這個裝置喚醒電腦」前面的勾取消掉就可以了。

像是上圖,就是已經被取消勾選的滑鼠;這樣可以避免不小心碰到滑鼠、就喚醒電腦的狀況。不過以羅技的滑鼠來說,由於他的功能比較多,在裝置管理員裡面,甚至有鍵盤也是他的,所以實際上要關閉的並不只一個裝置,這點是要注意的。

而有的裝置可能沒有「電源管理」這個分頁,這代表這個裝置沒有相關的功能,也不用擔心電腦因為他被喚醒。另外,有的裝置的「電源管理」裡面的選項可能相對複雜(例如 Intel 的網卡),這時候就需要個別研究了~


不過,以 Heresy 現在半夜被喚醒的狀況來說,因為沒人去碰鍵盤、也沒有網路連線(數據機被關了),所以應該並不是硬體裝置造成的,感覺上應該是某些軟體自己去排程喚醒電腦而造成的。所以,接下來就是要研究,Windows 裡面有什麼東西可能會喚醒電腦了~

首先,Windows 在電源管理的功能方面,有提供一個名為「powercfg」的指令,可以在命令提示字元下執行;他的說明可以參考微軟官網

其中,他有兩個命令,在要找出什麼東西喚醒電腦是有用的!其中一個,是

powercfg /lastwake

理論上,在命令提示字元執行這行命令後,他就會顯示出來,上次電腦被喚醒的資訊。不過實際執行後,Heresy 得到的結果是:

喚醒記錄計數 - 1
喚醒記錄 [0]
  喚醒來源計數 - 0

基本上,什麼都看不出來…

所以,接下來則是期望下一個命令:

powercfg /waketimers

這個命令執行後,他會把 Windows 裡面,時間到了會把電腦從睡眠或休眠喚醒的排程工作都列出來。而 Heresy 在執行後,則是得到了下面的結果:

[SERVICE] \Device\HarddiskVolume4\Windows\System32\svchost.exe 
(SystemEventsBroker) 設定的計時器在 02:35:04 的 2013/12/29 到期。 
  原因: Windows 將執行 'NT TASK\Microsoft\Windows\TaskScheduler\Regular Maintenance' 排定要求喚醒電腦的工作。

這次就很明確地知道,電腦在 12/29 的 02:35:04,會因為「NT TASK」裡的「Regular Maintenance」被強制喚醒了!

在知道可能的原因之後,接下來就是要讓他停工了~而由於「NT TASK」是 Windows 的「工作排程器」(參考),所以接下來就是要到「控制台」的「系統與安全性」裡面,找到位於「系統管理工具」下的「排程工作」,來叫出「工作排程器」的介面了。

由於 powercfg 的結果已經把「Regular Maintenance」所在的位置完整列出來了,所以在「工作排程器」中,可以很快地、一層一層下去地找到「Regular Maintenance」。

找到了之後,接下來就可點兩下,打開「Regular Maintenance」的設定頁面;其中,在「條件」這個頁面裡面,就可以看到有「電源」的選項。

Windows 8.1 預設似乎是開啟「喚醒電腦以執行此工作」這個選項的,這應該也就是造成電腦自動被喚醒的原因。所以,如果不希望因為這個工作把電腦叫醒的話,只要把「喚醒電腦以執行此工作」取消勾選就可以了。

而如果再回去執行「powercfg /waketimers」這個指令,應該就不會顯示有找到這個計時器了~

對「檢查是什麼東西把 Windows 喚醒的」的想法

  1. 感謝提供這個方法!
    想請問一下,在這邊查到是工作排程中的\Microsoft\Windows\UpdateOrchestrator\Reboot
    造成開機,但要停止的時候被要求輸入帳密,這台電腦並沒有其他的使用者了,請問這個帳密是什麼呢?
    系統為win10

    Liked by 1 person

  2. 我輸入powercfg/waketimers,cmd跳出我的權限無法執行的訊息。我以系統管理員身分執行後再打一次結果沒反應….
    拜託大大幫我解惑 謝謝

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料