标题: [系统相关] 怎样让电脑在唤醒后执行某个程序或服务 [打印本页]
作者: 小白龙 时间: 3 天前 07:22 标题: 怎样让电脑在唤醒后执行某个程序或服务
我需要让电脑在唤醒后执行C盘下的名为a.exe的服务, 如何实现? 查了些资料说是用计划任务, 但是试了多个事件都不成功, 求路过大佬支招
作者: 宁处理 时间: 3 天前 09:56
服务不是一般用nssm吗,不过不懂你睡眠唤醒是不是有这个效果。
作者: Five66 时间: 3 天前 11:07
唤醒是指登陆吧
计划任务的触发器设置成登陆时执行
作者: 小白龙 时间: 3 天前 13:23
回复 3# Five66
唤醒不是指登陆
作者: flashercs 时间: 3 天前 14:35
事件触发器(Trigger) 应该是 On workstation unlock
作者: 小白龙 时间: 3 天前 20:41
回复 5# flashercs
不是这个事件, 查了下, 说是电源事件, 但是没搞成功
作者: 小白龙 时间: 前天 05:18
回复 5# flashercs
下面是gpt的回答, 但是不生效, 不知道哪里错了,
你可以使用 **PowerShell** 或 **schtasks** 命令来创建一个计划任务,在**计算机从睡眠或休眠状态唤醒时**执行 `C:\a.exe`。
---
### **方法 1:使用 schtasks 命令**
你可以运行以下命令,在 Windows 任务计划程序中创建该任务:
```powershell
schtasks /create /tn "WakeUpTask" /tr "C:\a.exe" /sc onevent /mo "*[System/EventID=1]" /ec System /f
```
**解释:**
- `/tn "WakeUpTask"` —— 任务名称
- `/tr "C:\a.exe"` —— 要执行的程序
- `/sc onevent` —— 触发器类型是 **基于事件**
- `/mo "*[System/EventID=1]"` —— 监听 Windows 事件日志,**事件 ID 1 代表系统从睡眠/休眠唤醒**
- `/ec System` —— 监听 **系统日志**
- `/f` —— 强制创建
---
### **方法 2:使用 PowerShell**
如果你更喜欢 PowerShell,可以运行:
```powershell
$Trigger = New-ScheduledTaskTrigger -Logon | Where-Object { $_.Id -eq 1 }
$Action = New-ScheduledTaskAction -Execute "C:\a.exe"
Register-ScheduledTask -TaskName "WakeUpTask" -Trigger $Trigger -Action $Action -User "SYSTEM" -RunLevel Highest -Force
```
**解释:**
- `New-ScheduledTaskTrigger -Logon` 生成触发器,`Where-Object { $_.Id -eq 1 }` 过滤出 **唤醒事件**
- `New-ScheduledTaskAction -Execute "C:\a.exe"` 设定执行的程序
- `Register-ScheduledTask` 注册计划任务,设置 `SYSTEM` 账户执行并使用最高权限
---
### **方法 3:使用任务计划程序 GUI**
如果你想手动创建:
1. 打开 **任务计划程序** (`taskschd.msc`)
2. 选择 **创建任务**
3. **“触发器”** 选项卡 → **“新建”** → **“开始任务” 选择 “事件触发”**
- 选择 **日志:系统**
- 选择 **来源:Power-Troubleshooter**
- 选择 **事件 ID:1**(系统唤醒事件)
4. **“操作”** 选项卡 → **“新建”** → 选择 **启动程序**,并填写 **C:\a.exe**
5. **“条件”** 选项卡,勾选 **“唤醒计算机运行此任务”**
6. 点击 **确定**
---
这样,当电脑从睡眠状态恢复时,`C:\a.exe` 就会自动运行!🚀
作者: flashercs 时间: 前天 11:52
- schtasks.exe /Create /TN "WakeUpTask" /SC ONEVENT /MO "*[System/EventID=507]" /EC System /TR "C:\a.exe" /RU System /F
复制代码
作者: 小白龙 时间: 前天 20:59
回复 8# flashercs
我查了一下, 507是睡眠的事件,
作者: flashercs 时间: 前天 21:08
回复 9# 小白龙
EventID=506 The system is entering Modern Standby;
EventID=507 The system is exiting Modern Standby;
作者: Five66 时间: 昨天 11:58
回复 4# 小白龙
唤醒不是要进桌面??进桌面不是要登陆??登陆应该也可以吧??
计划任务的程序由system执行的话 ,如果程序有界面 ,因为nt6以上的Session 0隔离 ,其他用户是看不见的吧 ,得进入system账户的桌面才能看见 ,不过system账户是不可登陆的 ,win7的话倒是有特殊方法能进入system的桌面并进行交互
作者: czjt1234 时间: 昨天 17:58
vbs- Set oWshShell = CreateObject("WScript.Shell")
- Do
- a = Now()
- WScript.Sleep 1000
- If DateDiff("s", a, Now()) > 2 Then oWshShell.Run "cmd.exe"
- Loop
复制代码
win7测试通过
不过会有小于万分之一的极小概率失效,比如正好执行到 Loop 时进入睡眠
要100%成功的话写入个临时文件
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |