題 最終阻止喚醒計時器喚醒Windows 10桌面


如何在沒有用戶干預的情況下阻止Windows 10桌面從睡眠/休眠電源狀態喚醒?

對於很多用戶來說這不是問題,但是,如果你和你的PC在同一個房間裡睡覺,那麼讓你的機器在凌晨3:30醒來下載更新是令人生氣的。


208
2017-09-14 20:06


起源




答案:


回答

有很多事情可以影響這一點。我知道這個網站上有帖子詳細說明了處理這個問題的各種不同方法;這篇文章的目的是鞏固它們,並將自己的洞察力作為受其影響的人自己加入。

步驟2中概述的修復程序還可用於在安裝Windows更新後停止Windows 10重新啟動計算機。

此修復程序也適用於Fall Update(1709)。您需要再次禁用“重新啟動”任務並重新配置安全權限,因為更新過程會替換它。

步驟1:禁用所有電源配置文件的喚醒定時器

懶惰的技術博主會讓你相信這是你搜索的結束。雖然這一步確實可以消除一些錯誤的關閉,但是有許多設置和配置,特別是在Windows 10中,無論用戶干預如何都不遵守此設置。轉到“控制面板”>“電源選項”。從這裡,選擇列表中的第一個功率配置文件並禁用“喚醒定時器”。完成所有配置文件。

Power settings

(感謝StackExchange用戶 olee22 對於圖像)

在Windows 10上,強烈建議您修復此設置 對於所有電源配置文件,而不僅僅是你選擇使用的那個。各種Windows系統將使用不同的配置文件;這可以提高你不被喚醒的機會。

第2步:禁用不守規矩的“重啟”計劃任務

Windows 10的UpdateOrchestrator計劃任務文件夾包含一個名為“rebo​​ot”的任務。此任務將喚醒您的計算機以安裝更新,無論是否有可用的更新。僅僅取消其喚醒計算機的許可是不夠的;離開任務計劃程序後,Windows將只編輯它以再次授予自己權限。

在“控制面板”中,輸入“管理工具”,然後查看“任務計劃程序”。 Entering Task Scheduler

Task Scheduler

這是您想要的任務 - 在任務計劃程序庫> Microsoft> Windows> UpdateOrchestrator下。你想要做的最重要的事情是:

Remove permission for task to wake PC Disable task

從這裡,您將需要更改任務的權限,以便Windows無法騷擾它。任務位於 C:\ WINDOWS \ SYSTEM32 \ \任務微軟\的Windows \ UpdateOrchestrator。它被稱為“重新啟動”,沒有文件擴展名。右鍵單擊它,輸入屬性和 讓自己成為主人。最後,配置它以便顯示以下內容:

Reboot file with only read permissions

此處顯示的文件具有SYSTEM的只讀權限。使它成為沒有帳戶具有寫訪問權限,甚至不是您自己的(如果需要,您可以隨時更改權限)。還請確保從此屏幕上的“高級”按鈕禁用該文件的任何繼承權限,以覆蓋根文件夾上的任何現有權限。這將100%阻止Windows在您實施後更改您的更改。

設置完成後,您將不再需要擔心該計劃任務。

Windows 1709注意事項(秋季創建者更新)

Windows安裝過程會更改文件的權限,因此請確保在升級後再次閱讀本指南。 我聽說有一個新任務被稱為“交流電源安裝”,需要應用相同的步驟,但我沒有看到在安裝16299.192(2018-01 Meltdown補丁)更新後在我自己的設備上生成此任務我無法絕對肯定地提出建議。上面執行的相同步驟應該適用於已引入的任何任務。

第3步:在PowerShell中檢查喚醒定時器

您已經禁用了喚醒定時器功能,但Windows 10習慣不遵守該設置,因此為了安全起見,我們將運行PowerShell命令來清除所有可能,可行地喚醒您的PC的任務。打開管理PowerShell命令提示符(開始,鍵入'Powershell',Ctrl + Shift + Enter)並將此命令放在窗口中:

Get-ScheduledTask | where {$_.settings.waketorun}

完成列出的所有任務並刪除他們喚醒計算機的權限。你不應該像重啟那樣擔心權限;那是一個邊遠的案子。

第4步:檢查哪些硬件可以喚醒您的PC

很多USB硬件在使用時都可以喚醒你的PC(例如,當按下按鍵時鍵盤通常會這樣做);在這種情況下,局域網喚醒通常也是一個問題。對於初學者來說,現代硬件的一個常見且有用的特性稱為“局域網喚醒”。如果您的設備通過有線以太網電纜連接到本地網絡(它不適用於Wi-Fi),您可以通過它發送通信,以便在收到電腦時將其喚醒。這是我經常使用的一個功能,但它必須被引入,因為它的默認行為太過於過分。

在管理命令提示符中輸入以下命令:

powercfg -devicequery wake_armed

Command prompt output of command

在此處,在“設備管理器”(“控制面板”)中找到設備,然後在“電源管理”選項卡下,刪除它們喚醒計算機的功能。如果您有要保持局域網喚醒的網絡接口卡,請啟用“僅在收到魔術數據包時才喚醒此設備”,而不是喚醒所有發送的流量。

第5步:檢查組策略只是為了完全確定

右鍵單擊“開始”菜單,然後選擇“運行”。輸入GPEdit.MSC。在“計算機配置”>“管理模板”>“Windows組件”>“Windows更新”>“啟用Windows Update電源管理”下,找到以下設置,以自動喚醒系統以安裝計劃的更新。雙擊它並將其設置為Disabled。

Disabling Windows Update wake functionality

步驟6:禁用喚醒機器以進行自動維護

微軟的某個人對此有一種幽默感。如果你晚上被PC吵醒了,那麼你想要聽到的最重要的事情就是硬盤碾碎和研磨,因為它會進行夜間碎片整理。通過查找“控制面板”的“安全和維護”部分禁用此功能。從那裡,展開“維護”並查找“更改維護設置”的鏈接。

Disable automatic maintenance

將時間設置為更友善的時間(7PM很好)並禁用機器喚醒自己完成任務的能力。


337
2018-04-20 22:10



謝謝!我特別感謝堅強無情的決心,以獲得所有權 Reboot 在NTFS級別的任務定義文件,並減少偷偷摸摸的snaky sordid SYSTEM (ab)用戶只需讀取和執行權限。微軟決定推出進一步有害的敵對手持機制,這是一個適當的嚴肅方法。就像Boss的偉大歌曲一樣,今天早上我醒來時空曠的天空,前一天晚上是記事本和IE標籤中未保存的數據云。在更新和重啟的祭壇上犧牲用戶數據的操作系統顯然無法完成任務。 - Lumi
雖然你的答案非常全面,看起來很有效,而且我對其進行了投票,但我認為它可以更好地編寫,因為有些部分非常模糊和/或令人困惑(特別是那些不是超級Windows計算機的人)。例證:鏈接“使自己成為所有者”(基於命令行)的信息與右鍵單擊重新啟動任務並選擇屬性有什麼關係? - martineau
對於沒有組策略編輯器的Windows 10 Home的任何人,您可以手動修改註冊表,如中所述 這個答案 完成同樣的事情。 - martineau
謝謝你的回答。這正是我全心全意厭惡Windows 10的行為 - 儘管我明確點擊了其他內容,但將設置更改回其認為很好的內容。其他東西也像鍵盤佈局一樣發生。 - Dav
所以我剛升級到1709,無法讓這個Reboot-task死掉。即使在成為這項任務的唯一所有者並擁有完全權限之後,如果不提供“S-1-5-18”的密碼,我也無法改變任何東西 - 任何想法我怎麼能殺死這個該死的東西?! - MFH


我現在用這個腳本來 最終阻止喚醒計時器喚醒Windows 10桌面

# disable wake for enabled scheduled tasks that are allowed to wake
Get-ScheduledTask |
?{ $_.Settings.WakeToRun -eq $true -and $_.State -ne 'Disabled' } |
%{
    write-host $_
    $_.Settings.WakeToRun = $false;
    Set-ScheduledTask $_
}

# disable wake for devices that are allowed to wake (list of wake capable devices: powercfg -devicequery wake_from_any)
powercfg -devicequery wake_armed |
%{
    write-host $_
    if ($_ -notmatch '^(NONE)?$')
    { powercfg -devicedisablewake $_ }
}

# disable wake timers for all power schemes
powercfg -list | Select-String 'GUID' |
%{
    write-host $_
    $guid = $_ -replace '^.*:\s+(\S+?)\s+.*$', '$1'
    powercfg -setdcvalueindex $guid SUB_SLEEP RTCWAKE 0
    powercfg -setacvalueindex $guid SUB_SLEEP RTCWAKE 0
}

# disable wake for automatic updates and for automatic maintenance
'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\AUPowerManagement', 
'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance\WakeUp' |
%{
    write-host $_
    $key = split-path $_
    $name = split-path $_ -leaf
    $type = 'DWORD'
    $value = 0
    if (!(Test-Path $key))
    { New-Item -Path $key -Force | Out-Null }
    if ((Get-ItemProperty $key $name 2>$null).$name -ne $value)
    { Set-ItemProperty $key $name $value -type $type }
}

正如您所看到的,它或多或少地解決了所提到的所有步驟 這個 答案除了計劃的任務文件權限。但是,因為我打算默默地  這個腳本在每次解鎖/登錄時,我希望這根本不是問題。


21
2017-11-18 02:33



它是.bat腳本嗎? - alm
看起來像需要管理權限的PowerShell .ps1腳本。要正確禁用計劃任務(包括權限),請在批處理文件中使用TASKEOWN,ICACLS和SCHTASKS的組合。 - psouza4
沒有為我工作:( - sergiol


我發現另一個答案非常有幫助,如果可以,我會評論,但我想貢獻一個軟件,我很快寫了,以幫助完成這裡的步驟3和4:

https://github.com/Omniru/System-Wake-Manager/wiki/Home-&-Download

希望它對某些人有用。

enter image description here

enter image description here

您可能會看到彈出窗口,必須單擊“更多信息”然後“仍然運行”(如果您不確定它,請隨時檢查源代碼,它是在github上): enter image description here


7



好的工作,埃里克。 - seagull
因此,如果這是自動維護計劃任務,那麼為什麼在維護完成後它無法使計算機重新進入睡眠狀態?!那我就不會有問題了 - Vitas