Is there a way to have Windows (XP, Vista and 7) run a script when a machine returns from hibernate/suspend mode? It would be okay with me if the script runs after the user unlocks a locked session after their machine resumes.

I have a service that needs to be kicked when I a machine resumes in order to get it to run properly on resume.

4 Answers 4


In windows 7, you can do this with a scheduled task. Setup a batch script to do the actions you want and then create a task with one of the following triggers:

  • On workstation unlock - Ignores first log on, but will start after unlock.
  • On connection to user session - Every log on, can be local or remote connection.
  • On an event - In the system log, the "Power-Troubleshooter" Source will log an event code of 1 when you wake up from a sleep state.

I have not tested these to make sure that they work as expected, but I have used "On workstation lock" with high amount of success. From what I remember of scheduled tasks in XP, it only has "When I log on".

win 7 source doc

win XP source doc

Hope this helps

  • 2
    Note that "On workstation lock/unlock" trigger options are only shown for "Create Task..." and not "Create Basic Task..."
    – rymo
    Jun 14, 2012 at 18:37
  • The "Power-Troubleshooter" source works also with Win 8.1.
    – Herb
    May 16, 2017 at 7:28
  • 1
    The Power-Troubleshooter doesn't work for me in win 10 pro. The workstation unlock works anyway
    – e-cloud
    May 3, 2018 at 16:54
  • 1
    "On workstation unlock" works for me
    – sms247
    Dec 5, 2018 at 6:59
  • Event code 107 works for me in win 10 pro
    – Alex78191
    Jan 16, 2019 at 23:07

Using Win32_PowerManagementEvent? I just googled it and found the following script (no warranty;).

Set oShell = CreateObject("WScript.Shell")

Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("Select * from Win32_PowerManagementEvent")

  Set objLatestEvent = colMonitoredEvents.NextEvent

  Select Case objLatestEvent.EventType

    Case 4
      oShell.Run "Calc.exe", 1, False
      MsgBox "Entering suspend, Calc started", _
      vbInformation + vbSystemModal, "Suspend"

    Case 7
      oShell.Run "Notepad.exe", 1, False
      MsgBox "Resuming from suspend, notepad started", _
      vbInformation + vbSystemModal, "Suspend"

    Case 11
      MsgBox "OEM Event happened, OEMEventCode = " _
      & strLatestEvent.OEMEventCode

    Case 18
      MsgBox "Resume Automatic happened"

  End Select

Add a scheduled task with trigger: on workstation unlock. It works, I run it after wake up from sleep. Om my Windows 2008R2 box the audio service needs to be restarted, otherwise sometimes it uses 100% of 1 cpu.


I actually did write such a script a while ago and blogged about it, but I do believe it was a bit after your question here. Next time I write something like this I will search Stack Overflow right away, because when people look for such things, they tend to go to this site nowadays.

  • 4
    While having a link is nice, could you maybe post the important parts (even the script) here, on-site? This way users won't have to go somewhere else, and in case the blog ever goes down we have a backup.
    – slhck
    Dec 3, 2012 at 15:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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