web-dev-qa-db-ja.com

Windowsがサスペンド/ハイバネート状態から再開したときにスクリプトを実行しますか?

マシンが休止状態/サスペンドモードから戻ったときにWindows(XP、Vistaおよび7)でスクリプトを実行する方法はありますか?マシンの再開後にユーザーがロックされたセッションのロックを解除した後にスクリプトが実行されれば問題ありません。

再開時にマシンを適切に実行するために、マシンが再開したときにサービスを起動する必要があります。

15
Ian C.

Windows 7では、スケジュールされたタスクでこれを行うことができます。バッチスクリプトを設定して必要なアクションを実行し、次のいずれかのトリガーでタスクを作成します。

  • ワークステーションのロック解除時-最初のログオンを無視しますが、ロック解除後に開始します。
  • ユーザーセッションへの接続時-すべてのログオンは、ローカル接続またはリモート接続になります。
  • イベント時-スリープ状態からウェイクアップすると、システムログの「Power-Troubleshooter」ソースがイベントコード1をログに記録します。

これらが期待どおりに動作することを確認するためにこれらをテストしていませんが、「ワークステーションロック」を使用して大きな成功を収めています。私がXPでスケジュールされたタスクについて覚えていることから、それは「ログオンしたとき」しかありません。

win 7ソースドキュメント

win XPソースドキュメント

お役に立てれば

15
Doltknuckle

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
2
Andy

スケジュールされたタスクをトリガー付きで追加:ワークステーションのロック解除。それは機能し、私は睡眠から目覚めた後にそれを実行します。私のWindows 2008R2ボックスでは、オーディオサービスを再起動する必要があります。それ以外の場合は、1 CPUの100%を使用することがあります。

1
ed m