How do you stop a Windows 10 Desktop waking up from the sleeping/hibernated power state without user intervention?

For lots of users this won't be an issue but, if you sleep in the same room as your PC, then having your machine wake up at 3:30AM to download updates is irritating.

up vote 337 down vote accepted
+100

Answer

There are a number of things that can affect this. I'm aware there are posts all over this site detailing various different ways to approach the issue; this post aims to consolidate them and add my own insight into the issue as someone affected by it themselves.

The fix outlined in Step 2 can also be used to stop Windows 10 from rebooting the machine after installing Windows Updates.

This fix works for the Fall Update (1709) as well. You will need to disable the 'Reboot' task again and re-configure the security permissions, though, because the update process replaces it.

Step 1: Disable wake timers for all power profiles

Lazy tech-bloggers would have you believe this is the end of your search. While it's true that this step will eliminate a few errant shutdowns, there are a number of settings and configurations, particularly in Windows 10, that fail to respect this setting regardless of user intervention. Go to the Control Panel > Power Options. From here, pick whatever power profile is first on the list and disable 'Wake timers'. Work through all profiles.

Power settings

(Thanks to StackExchange user olee22 for the image)

On Windows 10, it is strongly recommended you fix this setting for all power profiles, not just the one you have chosen to use. Various Windows faculties will use different profiles; this improves your chances of not being woken up.

Step 2: Disable the unruly "reboot" scheduled task

Windows 10's UpdateOrchestrator scheduled task folder contains a task called "reboot". This task will wake your computer up to install updates regardless of whether or not any are available. Simply removing its permission to wake the computer is not sufficient; Windows will just edit it to give itself permission again after you leave the Task Scheduler.

From your Control Panel, enter Administrative Tools, then view your Task Scheduler. Entering Task Scheduler

Task Scheduler

This is the task you want - under Task Scheduler Library > Microsoft > Windows > UpdateOrchestrator. The most important things you want to do are:

Remove permission for task to wake PC Disable task

From here, you will need to alter the permissions for the task so that Windows cannot molest it. The task is located in C:\Windows\System32\Tasks\Microsoft\Windows\UpdateOrchestrator. It's called "Reboot" without a file extension. Right-click it, enter properties and make yourself the owner. Finally, configure it so that the following is shown:

Reboot file with only read permissions

Here the file is shown with read-only permissions for SYSTEM. Make it so that no account has write access, not even your own (you can always change permissions later if you need to). Please also ensure you disable any inherited permissions for the file from the "Advanced" button on this screen, to override any existing permissions on the root folder. This will 100% STOP Windows from messing with your changes after you've implemented them.

Once this has been set, you won't need to worry about that scheduled task any more.

Note for Windows 1709 (Fall Creators' Update)

The Windows installation process changes permissions for files, so make sure you go through this guide again after upgrading. I have heard reports that a new task is made called "AC Power Install" which requires the same steps applied to it, but I have not seen this task produced on my own device after installing the 16299.192 (2018-01 Meltdown patch) update so I cannot advise with absolute certainty. The same steps as performed above should work on any task that has been introduced.

Step 3: Check Wake Timers in PowerShell

You have disabled wake timer functionality, but Windows 10 has a habit of not respecting that setting, so to be safe, we're going to run a PowerShell command to weed out all tasks that can, feasibly, wake your PC. Open an Administrative PowerShell command prompt (Start, type 'Powershell', Ctrl+Shift+Enter) and place this command in the window:

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

Go through all the tasks it lists and remove their permission to wake your computer. You shouldn't need to worry about permissions like we did with Reboot; that was an outlying case.

Step 4: Check what hardware can wake your PC

Lots of USB hardware, when engaged, has the ability to wake your PC (keyboards often do when keys are pressed for example); wake-on-LAN is typically also an issue in this scenario. For the uninitiated, a common and useful feature of modern hardware is called 'Wake on LAN'. If your device is attached to a local network by way of a wired Ethernet cable (it doesn't work for Wi-Fi) you can send communications through that will wake your PC up when received. It's a feature I use often but it must be brought into line, as its default behaviour is far too overzealous.

Enter the following command into an administrative command prompt:

powercfg -devicequery wake_armed

Command prompt output of command

From here, find the devices in your Device Manager (Control Panel) and, under the "Power Management" tab, remove their ability to wake your computer up. If you have network interface cards that you want to keep Wake-on-LAN for, enable "Only wake this device if it receives a magic packet" as opposed to waking up for all traffic sent its way.

Step 5: Check the Group Policy just to be completely sure

Right-click your Start menu and select 'Run'. Type in GPEdit.MSC. Find the following setting under Computer Configuration > Administrative Templates > Windows Components > Windows Updates > Enabling Windows Update Power Management to automatically wake up the system to install scheduled updates. Double-click it and set it to Disabled.

Disabling Windows Update wake functionality

Step 6: Disable waking your machine up for automatic maintenance

Someone at Microsoft has a sense of humour for this one. If you're woken at night by your PC, the one thing you want to hear more than anything else is the hard drive crunching and grinding as it does a nightly defragmentation. Disable this feature by finding the "Security and Maintenance" section of the Control Panel. From there, expand "Maintenance" and look for the link to "Change Maintenance settings".

Disable automatic maintenance

Set the time to something more sociable (7PM is fine) and disable the machine's ability to wake itself up for the task.

  • 12
    Thanks! I especially appreciated the robust rugged ruthless resolve to take ownership of the Reboot task definition file at the NTFS level and reduce the sneaky snaky sordid SYSTEM (ab)user to mere read & exec permissions. An appropriate no-nonsense approach to keep in mind should Microsoft decide to roll out further harmful hostile hand-holding machinations. As in the Boss' great song, this morning I awoke to an empty sky where the night before had been unsaved clouds of data in notepad and IE tabs. An OS sacrificing user data on the altar of Update & Reboot clearly fails its mission. – Lumi Jan 13 '16 at 10:53
  • 6
    Although your answer is very comprehensive, seems effective, and I up-voted it, I think it could have been better written as several parts are very vague and/or confusing (especially to folks who aren't super Windows computer savvy). Case in point: What does the info at the link "make yourself the owner" (which is command-line based) have to do with right-clicking on the reboot task and selecting Properties? – martineau Jan 21 '16 at 13:58
  • 3
    For anyone with Windows 10 Home which doesn't have the group policy editor, you can modify the registry manually as described in this answer to accomplish the same thing. – martineau Jan 27 '16 at 7:46
  • 6
    Thank you for this answer. This is exactly the sort of behaviour I hate Windows 10 with all my heart for — changing settings back to what it thinks is nice despite me explicitly clicking otherwise. Happens with other stuff too like keyboard layouts. – Dav Mar 11 '16 at 10:49
  • 9
    So I just upgraded to 1709 and can't get this Reboot-task to die. Even after becoming the sole owner of this task and having full permissions I can't change anything without providing the password for "S-1-5-18" - any ideao how I can kill this damn thing?! – MFH Nov 16 '17 at 22:22

I now use this script to Conclusively stop wake timers from waking Windows 10 desktop:

# 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 }
}

As you can see, it more or less addresses all of the steps mentioned in this answer except for the scheduled task file permissions. However, since I intend to silently run this script upon every unlock/logon, I hope this will not be a problem at all.

  • Is it a .bat script? – alm Jun 18 '16 at 13:48
  • 4
    Looks like a PowerShell .ps1 script requiring administative permissions. To disable the scheduled tasks properly, including permissions, use a combination of TASKEOWN, ICACLS, and SCHTASKS in a batch file. – psouza4 Jun 18 '16 at 16:24
  • Did not work for me :( – sergiol Jan 19 '17 at 22:00

I found the other answer incredibly helpful, and would just comment if I could, but I wanted to contribute a piece of software I quickly wrote to help with steps 3 & 4 found here:

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

Hopefully it's of some use to some people.

enter image description here

enter image description here

You may see this pop up and have to click "More info" and then "Run anyway" (if you're not sure about it, feel free to check the source code, it is on github afterall): enter image description here

  • Nice work, Eric. – seagull Nov 18 '16 at 9:33
  • So if it is this automatic maintenance scheduled task then why the heck can't it put the computer back to sleep after maintenance is done?! Then I would not have a problem with it – Vitas Jan 18 at 19:22

protected by Community Feb 15 '16 at 18:20

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.