如何配置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




