概括

概括

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

對於許多用戶來說,這不會是一個問題,但是,如果您與 PC 睡在同一個房間,那麼讓您的電腦在凌晨 3:30 喚醒來下載更新會令人惱火。

答案1

概括

2022 年 4 月:我製作了一個新的 PowerShell 腳本,它將停用 Windows 的排程任務以自動喚醒裝置。將其與本指南的其他部分一起使用。下載地址: https://github.com/seagull/disable-scheduledWaking

有很多因素會影響這一點。我知道這個網站上到處都是帖子,詳細介​​紹了解決該問題的各種不同方法;這篇文章的目的是鞏固它們,並添加我自己作為受該問題影響的人對這個問題的見解。

步驟 2 中概述的修復也可用於阻止 Windows 10 在安裝 Windows 更新後重新啟動電腦。

此修復也適用於秋季更新 (1709)。不過,您將需要再次停用「重新啟動」任務並重新配置安全權限,因為更新過程會取代它。

步驟 1:停用所有電源設定檔的喚醒計時器

懶惰的技術部落客會讓你相信這就是你的搜尋的結束。雖然此步驟確實可以消除一些錯誤關閉,但有許多設定和配置(尤其是在 Windows 10 中)無論用戶如何干預都無法遵守此設定。轉到Control PanelPower Options。從這裡,選擇清單中第一個的電源設定檔並停用「喚醒計時器」。處理所有設定檔。

電源設定

感謝 StackExchange 用戶奧利22對於圖像。

在 Windows 10 上,強烈建議您修復此設置適用於所有電源設定檔,而不僅僅是您選擇使用的。不同的 Windows 學院將使用不同的設定檔;這會增加您不被吵醒的機會。

第二步:停用不規則的reboot排程任務

Windows 10 的 UpdateOrchestrator 排程任務資料夾包含一個名為「重新啟動」的任務。此任務將喚醒您的電腦以安裝更新,無論是否有可用更新。僅僅刪除其喚醒電腦的權限是不夠的。在您離開任務規劃程式後,Windows 將對其進行編輯以再次授予自身權限。

從您的Control Panel,輸入Administrative Tools,然後查看您的Task Scheduler進入任務計劃程序

任務調度程序

這是您想要的任務 - 在Task Scheduler LibraryMicrosoftWindows→下UpdateOrchestrator。您想做的最重要的事情是:

刪除任務喚醒 PC 的權限 停用任務

從這裡開始,您將需要更改該任務的權限,以便 Windows 無法幹擾它。該任務位於C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator.它的呼叫Reboot沒有檔案副檔名。右鍵單擊它,輸入屬性並讓自己成為主人。最後,進行配置,使其顯示如下:

僅具有讀取權限重新啟動文件

此處顯示的檔案具有 SYSTEM 的唯讀權限。使任何帳戶都沒有寫入權限,即使是您自己的帳戶也沒有(如果需要,您可以隨時更改權限)。另請確保從此畫面上的按鈕停用該檔案的任何繼承權限Advanced,以覆寫根資料夾上的任何現有權限。在您實施變更後,這將 100% 阻止 Windows 幹擾您的變更。

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

如果您沒有更改UpdateOrchestrator任務的權限

現在改變UpdateOrchestrator的任務需要SYSTEM權限,既不需要權限administrator也不需要TrustedInstaller權限。

解決這個問題的方法之一是:

  1. 安裝微軟自己的PsTools
  2. Command Prompt以管理員身份開啟並cd進入本機PsTools資料夾。
  3. 執行:
    psexec.exe -i -s %windir%\system32\mmc.exe /s taskschd.msc
    
  4. 如前所述,轉到UpdateOrchestrator並停用任務。Reboot

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

Windows 安裝程序會變更檔案的權限,因此請確保在升級後再次閱讀本指南。

我聽說有報告稱調用了一個新任務AC Power Install,需要應用相同的步驟,但在安裝16299.192(2018-01 Meltdown 補丁)更新後,我還沒有看到在我自己的設備上生成此任務,因此我無法提供絕對建議肯定。與上面執行的相同步驟應該適用於已引入的任何任務。

步驟 3:在 PowerShell 中檢查喚醒計時器

您已停用喚醒計時器功能,但 Windows 10 習慣於不遵守該設置,因此為了安全起見,我們將執行 PowerShell 命令來清除所有可能喚醒您的電腦的任務。開啟管理 PowerShell 命令提示字元(開始,鍵入“Powershell”,Ctrl+Shift+Enter)並將此命令放入視窗中:

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

檢查它列出的所有任務並刪除它們喚醒電腦的權限。您不需要像我們一樣擔心權限Reboot;那是一個例外情況。

步驟 4:檢查哪些硬體可以喚醒您的電腦

許多 USB 硬體在使用時都能夠喚醒您的 PC(例如,當按下按鍵時鍵盤通常會這樣做);在這種情況下,LAN 喚醒通常也是一個問題。對於外行人來說,現代硬體的一個常見且有用的功能稱為「LAN 喚醒」。如果您的裝置透過有線乙太網路電纜連接到本地網路(不適用於 Wi-Fi),您可以透過該電纜發送通信,收到後會喚醒您的電腦。這是我經常使用的功能,但必須遵守它,因為它的預設行為過於熱心。

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

powercfg -devicequery wake_armed

命令提示字元輸出命令

Device Manager從這裡,找到( )中的設備Control Panel,然後在Power Management選項卡下刪除它們喚醒電腦的功能。如果您想要保留 LAN 喚醒功能的網路介面卡,請啟用它,Only wake this device if it receives a magic packet而不是喚醒所有傳送的流量。

步驟 5:檢查群組策略以完全確定

右鍵單擊“開始”功能表並選擇Run。輸入GPEdit.MSC。在Computer ConfigurationAdministrative TemplatesWindows ComponentsWindows Updates→下方找到以下設置Enabling Windows Update Power Management,自動喚醒系統安裝計劃更新。雙擊它並將其設為禁用。

停用 Windows 更新喚醒功能

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

微軟的某個人對此很有幽默感。如果您在晚上被電腦吵醒,您最想聽到的一件事就是硬碟在夜間進行碎片整理時發出的嘎吱聲。透過查找Security and Maintenance.Control Panel從那裡展開Maintenance並尋找 的連結Change Maintenance settings

停用自動維護

將時間設定為更適合社交的時間(晚上 7 點就可以了),並停用機器喚醒自己執行任務的能力。

答案2

我現在使用這個腳本最終停止喚醒計時器喚醒 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 }
}

正如您所看到的,它或多或少解決了中提到的所有步驟答案除了規劃任務文件權限。然而既然我打算默默地跑步每次解鎖/登入時都會執行此腳本,我希望這根本不會成為問題。

答案3

我發現另一個答案非常有幫助,如果可以的話我會發表評論,但我想貢獻一個我快速編寫的軟體來幫助完成此處找到的步驟 3 和 4:

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

希望它對某些人有用。

在此輸入影像描述

在此輸入影像描述

你可能會看到這個彈出窗口,必須點擊“更多資訊”,然後“仍然運行”(如果你不確定,請隨意檢查源代碼,畢竟它在 github 上): 在此輸入影像描述

相關內容