有没有办法让 Windows (XP、Vista 和 7) 在计算机从休眠/挂起模式返回时运行脚本?如果在计算机恢复后用户解锁锁定的会话后运行脚本,我同意。
我有一个服务,需要在机器恢复时将其踢出,以使其在恢复时正常运行。
答案1
在 Windows 7 中,您可以使用计划任务执行此操作。设置批处理脚本来执行您想要的操作,然后使用以下触发器之一创建任务:
- 在工作站解锁时-忽略首次登录,但将在解锁后启动。
- 连接到用户会话时 - 每次登录都可以是本地或远程连接。
- 在事件中 - 在系统日志中,当您从睡眠状态唤醒时,“电源故障排除程序”源将记录事件代码 1。
我没有测试这些以确保它们按预期工作,但我使用过“工作站锁定时”并取得了很大成功。据我记得,XP 中的计划任务只有“当我登录时”。
希望这可以帮助
答案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
答案3
添加带有触发器的计划任务:工作站解锁。它有效,我在从睡眠状态唤醒后运行它。在我的 Windows 2008R2 机箱中,音频服务需要重新启动,否则有时会占用 1 个 CPU 的 100%。
答案4
我之前确实写过这样的脚本,已发表于博客对此我不太了解,但我相信这是在你提出问题之后的事情。下次我写类似的东西时,我会立即搜索 Stack Overflow,因为现在人们在寻找这类东西时,往往会访问这个网站。