家裡 Windows 10 的使用率不高,平時長期處於睡眠狀態,但偶爾會發現無故醒來,我知道有部分 Windows 排程具有喚醒電腦能力,正常情況醒來做完事閒置一陣子會再回去睡覺,發現醒著多半是閒置休眠機制失靈,倒也沒特別調查。今天心血來潮挖了一下,發現一個祕密—原來我的 Windows 10 固定每天早上十點多都會起床夢遊,有趣的是,起床時間還不固定,甚至有最遲 10:57 才起來的記錄:

檢視事件詳細內容追到一個排程 NT TASK\Microsoft\Windows\rempl\shell

在「工作排程器」Microsoft、Windows、rempl 資料夾的確有個 shell 排程,被設定成「喚醒電腦以執行此工作」,而上次執行時間 10:57:30,距離電腦被喚醒時間不到 30 秒。罪證確鑿,豈容狡辯! (怒拍驚堂木) 來人吶...

至於醒來時間不是十點整,每天不固定亂跳是怎麼回事?是洋葱,是排程有延遲 0 到 1 小時的隨機設定。

確認喚醒行為後,下個疑問是「rempl/shell 排程」是什麼鬼?可以關掉嗎?

以下是我找到幾篇相關文章:

MS Answers 論壇文章 windows task wakes up computer
SuperUser 文章 如何停用排程的喚醒能力

研究心得如下:

  1. rempl/shell 是 Windows 10 1607 更新加入的每日固定檢查,跟 Windows Update 更新有關。每天把在睡覺電腦挖起來檢查更新很符合資安精神,有無矯枉過正倒見仁見智。 (由事件檢視器觀察 rempl/shell 喚醒電腦後多半只有幾分鐘的活動記錄,懷疑它有處理完就叫電腦回去睡的能力,但僅為猜測尚未實驗證實)
  2. 檢查目前有沒有排定的喚醒時程,可使用指令 powercfg /waketimers
    下圖兩次執行結果為啟用 rempl/shell「喚醒電腦以執行此工作」選項前後的差異
  3. 要停用排程的喚醒能力,可以從電源管理下手
  4. 要檢查哪些排程被設成可喚醒電腦,有個好用 PowerShell 指令 - Get-ScheduledTask | where {$_.settings.waketorun}

Comments

Be the first to post a comment

Post a comment