找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12150|回复: 11

[系统相关] 怎样让电脑在唤醒后执行某个程序或服务

[复制链接]
发表于 2025-2-2 07:22:32 | 显示全部楼层 |阅读模式
我需要让电脑在唤醒后执行C盘下的名为a.exe的服务, 如何实现? 查了些资料说是用计划任务, 但是试了多个事件都不成功, 求路过大佬支招
发表于 2025-2-2 09:56:15 | 显示全部楼层
服务不是一般用nssm吗,不过不懂你睡眠唤醒是不是有这个效果。
发表于 2025-2-2 11:07:21 | 显示全部楼层
唤醒是指登陆吧
计划任务的触发器设置成登陆时执行
 楼主| 发表于 2025-2-2 13:23:34 | 显示全部楼层
回复 3# Five66


    唤醒不是指登陆
发表于 2025-2-2 14:35:56 | 显示全部楼层
事件触发器(Trigger) 应该是 On workstation unlock
 楼主| 发表于 2025-2-2 20:41:46 | 显示全部楼层
回复 5# flashercs


    不是这个事件, 查了下, 说是电源事件, 但是没搞成功
 楼主| 发表于 2025-2-3 05:18:46 | 显示全部楼层
回复 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` 就会自动运行!🚀
发表于 2025-2-3 11:52:50 | 显示全部楼层
  1. schtasks.exe /Create /TN "WakeUpTask" /SC ONEVENT /MO "*[System/EventID=507]" /EC System /TR "C:\a.exe" /RU System /F
复制代码
 楼主| 发表于 2025-2-3 20:59:26 | 显示全部楼层
回复 8# flashercs


   我查了一下,  507是睡眠的事件,
发表于 2025-2-3 21:08:58 | 显示全部楼层
回复 9# 小白龙


EventID=506 The system is entering Modern Standby;
EventID=507 The system is exiting Modern Standby;
发表于 2025-2-4 11:58:44 | 显示全部楼层
回复 4# 小白龙


   
唤醒不是要进桌面??进桌面不是要登陆??登陆应该也可以吧??
计划任务的程序由system执行的话 ,如果程序有界面 ,因为nt6以上的Session 0隔离 ,其他用户是看不见的吧 ,得进入system账户的桌面才能看见 ,不过system账户是不可登陆的 ,win7的话倒是有特殊方法能进入system的桌面并进行交互
发表于 2025-2-4 17:58:20 | 显示全部楼层
vbs
  1. Set oWshShell = CreateObject("WScript.Shell")
  2. Do
  3.     a = Now()
  4.     WScript.Sleep 1000
  5.     If DateDiff("s", a, Now()) > 2 Then oWshShell.Run "cmd.exe"
  6. Loop
复制代码
win7测试通过

不过会有小于万分之一的极小概率失效,比如正好执行到 Loop 时进入睡眠
要100%成功的话写入个临时文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:29 , Processed in 0.020373 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表