Запустить скрипт, когда Windows выйдет из режима ожидания / гибернации?

14

Есть ли способ заставить Windows (XP, Vista и 7) запускать скрипт, когда машина возвращается из режима гибернации / приостановки? Было бы хорошо, если бы скрипт запускался после того, как пользователь разблокировал заблокированный сеанс после возобновления работы своего компьютера.

У меня есть служба, которую нужно отключить, когда я возобновлю работу машины, чтобы она работала правильно при возобновлении работы.

Ян С.
источник

Ответы:

14

В Windows 7 вы можете сделать это с помощью запланированного задания. Настройте пакетный скрипт для выполнения необходимых действий, а затем создайте задачу с одним из следующих триггеров:

  • Разблокировка на рабочей станции - игнорирует первый вход в систему, но запускается после разблокировки.
  • При подключении к сеансу пользователя - каждый вход в систему, может быть локальным или удаленным подключением.
  • О событии. В системном журнале источник «Power-Troubleshooter» регистрирует код события 1, когда вы выходите из спящего режима.

Я не проверял их, чтобы убедиться, что они работают должным образом, но я использовал «Блокировку на рабочей станции» с большим успехом. Из того, что я помню о запланированных задачах в XP, он имеет только «Когда я вхожу в систему».

Win 7 Source Doc

Win XP исходный документ

Надеюсь это поможет

Doltknuckle
источник
2
Обратите внимание, что параметры триггера «Блокировка / разблокировка на рабочей станции» отображаются только для «Создать задачу ...», а не «Создать базовую задачу ...»
rymo
Источник Power-Troubleshooter работает также с Win 8.1.
Трава
1
Power-Troubleshooter не работает для меня в Win 10 Pro. Разблокировка рабочей станции работает в любом случае
e-cloud
1
У меня работает "Разблокировка на рабочей станции"
sms247
Код события 107 работает для меня в win 10 pro
Alex78191
2

Используете Win32_PowerManagementEvent ? Я просто погуглил и нашел следующий скрипт (без гарантии;).

Set oShell = CreateObject("WScript.Shell")

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

Do
  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
Loop
Энди
источник
1

Добавьте запланированное задание с помощью триггера: разблокировка рабочей станции. Работает, запускаю после пробуждения ото сна. На моем компьютере с Windows 2008R2 аудио-сервис необходимо перезапустить, в противном случае иногда он использует 100% от 1 процессора.

Эд м
источник
-1

Я действительно написал такой сценарий некоторое время назад и написал об этом в блоге , но я полагаю, что это было немного после вашего вопроса здесь. В следующий раз, когда я напишу что-то подобное, я сразу же начну поиск переполнения стека, потому что, когда люди ищут такие вещи, они, как правило, посещают этот сайт в настоящее время.

regeter
источник
4
Хотя наличие ссылки - это хорошо, не могли бы вы опубликовать важные части (даже сценарий) здесь, на месте? Таким образом, пользователям не нужно будет идти куда-то еще, и на случай, если блог когда-нибудь закроется, у нас будет резервная копия.
Slhck