前言

Windows 上需要实现定时任务可以通过任务计划程序,但是如果需要在 Windows 上打开或是退出某个应用,可以自动地执行对应的脚本或是程序,也是很常见的一种自动化需求,实现的方案有很多,如何采用 AutoHotKey 脚本,通过 Windows 本身的功能实现,适合不折腾的人。

版本:Window10 专业版 21H1

Windows 自定义软件开启和关闭对应配置

书写执行脚本(.bat 或是 .exe)

以 .bat 为例子:脚本内头三行添加[1]静默执行不弹窗设置
注意:显示 .vbs 不能执行的则需要在 PowerShell 管理员页面输入 sfc /scannow 修复Windows报错[2]

1
2
3
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin

开启windows的安全审计日志(开启只记录成功的日志选项)开启后不能关闭

Win + R 运行框内填写 secpol.msc
运行
本地安全策略框内 双击审核策略 —> 右侧策略框 双击选中的审核进程跟踪服务 —> 本地安全设置选项卡 勾选成功 然后应用,确认即可
配置页面

配置任务计划程序

1.在开机界面 Window10 底部搜索栏搜任务计划程序
搜索任务计划程序

2.新建计划及监听[3]
新建任务计划

  • 任务计划程序库右击选中新文件夹创建新文件New

  • 选中New后,点击创建任务 跳出创建任务界面

    • 常规选项卡下填入名称描述;对于是否使用最高权限看脚本执行的权限
    • 触发器选项卡 新建 —> 开始任务选发生事件时 , 勾选 激活(A)
      • 选自定义,出来新建事情筛选器
        • 切换到 XML 选项卡,勾选手动编辑查询
        • 填入事件筛选器查询xml,app 启动的exe 换成你需要启动或是关闭的,确认即可
    • 操作选项卡 新建
      • 操作默认的启动程序,程序或是脚本为.bat或是.exe所在路径
  • 事件筛选器查询xml[4] – 应用程序退出时运行脚本或exe

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and
    (band(Keywords,9007199254740992)) and (EventID=4689)]] and
    *[EventData[(Data='你的程序exe文件路径')]]
    </Select>
    </Query>
    </QueryList>
  • 事件筛选器查询xml[4:1] – 应用程序开启时运行脚本或exe

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <QueryList>
    <Query Id="0" Path="Security">
    <Select Path="Security">
    *[System[band(Keywords,9007199254740992) and
    (EventID=4688)]] and
    *[EventData[Data[@Name='NewProcessName'] and
    (Data='你的程序exe文件路径')]]
    </Select>
    </Query>
    </QueryList>

  1. 批处理文件 bat 后台运行 ↩︎

  2. 系统文件检查器工具修复丢失或损坏的系统文件 ↩︎

  3. Windows任务计划程序新建过程 ↩︎

  4. 实现开启一个一个应用另一个同时启动 ↩︎ ↩︎