[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

我需要让电脑在唤醒后执行C盘下的名为a.exe的服务, 如何实现? 查了些资料说是用计划任务, 但是试了多个事件都不成功, 求路过大佬支招

服务不是一般用nssm吗,不过不懂你睡眠唤醒是不是有这个效果。

TOP

唤醒是指登陆吧
计划任务的触发器设置成登陆时执行

TOP

回复 3# Five66


    唤醒不是指登陆

TOP

事件触发器(Trigger) 应该是 On workstation unlock
微信:flashercs
QQ:49908356

TOP

回复 5# flashercs


    不是这个事件, 查了下, 说是电源事件, 但是没搞成功

TOP

回复 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` 就会自动运行!🚀

TOP

  1. schtasks.exe /Create /TN "WakeUpTask" /SC ONEVENT /MO "*[System/EventID=507]" /EC System /TR "C:\a.exe" /RU System /F
复制代码
微信:flashercs
QQ:49908356

TOP

回复 8# flashercs


   我查了一下,  507是睡眠的事件,

TOP

回复 9# 小白龙


EventID=506 The system is entering Modern Standby;
EventID=507 The system is exiting Modern Standby;
微信:flashercs
QQ:49908356

TOP

回复 4# 小白龙


   
唤醒不是要进桌面??进桌面不是要登陆??登陆应该也可以吧??
计划任务的程序由system执行的话 ,如果程序有界面 ,因为nt6以上的Session 0隔离 ,其他用户是看不见的吧 ,得进入system账户的桌面才能看见 ,不过system账户是不可登陆的 ,win7的话倒是有特殊方法能进入system的桌面并进行交互

TOP

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%成功的话写入个临时文件

QQ 20147578

TOP

返回列表