You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Windows 10在特定服务启动时发送通知?

当然可以!在Windows 10里,我们完全可以用系统自带的工具实现「特定服务启动后立即通知用户」的需求,我整理了两种最实用的方案,你可以根据自己的需求选择:

方案1:任务计划程序(最推荐,零额外工具)

这是最稳定的方法,全程用Windows内置的任务计划程序完成,步骤清晰:

  • 打开任务计划程序:可以通过开始菜单搜索「任务计划程序」,或者按下Win + R输入taskschd.msc回车快速打开。
  • 创建新任务:点击右侧面板的「创建任务」,给任务起个直观的名字(比如「Windows更新服务启动通知」),勾选「不管用户是否登录都要运行」(如果需要后台持续监测的话),再勾选「使用最高权限运行」避免权限不足的问题。
  • 设置触发条件:切换到「触发器」标签,点击「新建」,在「开始任务」下拉菜单选择「当特定事件被记录时」。接着设置日志为「系统」,来源为「Service Control Manager」,事件ID填7036(这个ID对应服务状态变更的系统事件,包括启动)。

    重点:点击「编辑筛选器」,切换到「XML」标签,勾选「手动编辑查询」,把默认XML替换成下面的内容(记得把YourServiceName替换成你要监测的服务名称——不是显示名称,比如Windows更新的服务名称是wuauserv,可以在services.msc里右键服务选「属性」查看):

    <QueryList>
      <Query Id="0" Path="System">
        <Select Path="System">*[System[Provider[@Name='Service Control Manager'] and EventID=7036]] and *[EventData[Data[@Name='param1']='YourServiceName' and Data[@Name='param2']='running']]</Select>
      </Query>
    </QueryList>
    
  • 设置通知操作:切换到「操作」标签,点击「新建」。如果你要简单的弹窗通知,操作选「显示消息」,填写标题和内容即可(比如标题「服务启动提醒」,消息「目标服务已成功启动!」)。

    进阶选项:如果觉得系统弹窗不够显眼,也可以选择「启动程序」,运行PowerShell脚本弹出更美观的Toast通知(看方案2)。

  • 完成配置:切换到「设置」标签,根据需要调整任务失败后的重试规则,然后点击确定保存任务。
方案2:PowerShell脚本+Toast通知(更美观灵活)

如果你想要Windows风格的Toast通知(带图标、可交互),可以用PowerShell脚本实现:

  • 先写一个PowerShell脚本(比如命名为ServiceStartNotify.ps1),内容如下(替换YourServiceName为目标服务名称):
    # 加载Toast通知所需的Windows Runtime组件
    [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
    [Windows.UI.Notifications.ToastNotification, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
    [Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
    
    # 构建Toast通知的XML模板
    $toastXml = @"
    <toast>
      <visual>
        <binding template="ToastGeneric">
          <text>服务启动提醒</text>
          <text>YourServiceName 服务已成功启动!</text>
        </binding>
      </visual>
    </toast>
    "@
    
    # 创建并显示Toast通知
    $xmlDoc = New-Object Windows.Data.Xml.Dom.XmlDocument
    $xmlDoc.LoadXml($toastXml)
    $toastNotification = New-Object Windows.UI.Notifications.ToastNotification $xmlDoc
    [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("ServiceMonitor").Show($toastNotification)
    
  • 回到任务计划程序,创建任务时,操作选择「启动程序」,程序或脚本填powershell.exe,添加参数填-ExecutionPolicy Bypass -File "C:\你的脚本路径\ServiceStartNotify.ps1"(替换成实际的脚本路径)。触发条件和方案1完全一致。
小提示
  • 一定要确认服务名称的准确性:在services.msc里找到目标服务,右键「属性」,查看「服务名称」字段,这个才是我们需要填到筛选器和脚本里的内容,别用显示名称哦。
  • 测试任务:设置完成后,可以手动启动目标服务,然后去任务计划程序的「历史记录」里查看任务是否触发,或者直接等待通知弹出验证效果。

内容的提问来源于stack exchange,提问作者Mehdi Dehghani

火山引擎 最新活动