讲师中心 微信公众号
AI工具推荐 视频效率加速

Windows 服务运行状态切换及其触发条件设置

夜雪酱_5086

夜雪酱_5086

发布时间:2026-07-21 11:47:06

|

832人浏览过

|

来源于php中文网

原创

Windows服务状态切换依赖服务主动上报、启动类型配置及系统事件触发三要素。服务须用SetServiceStatus报告状态,启动类型(自动/手动/禁用/触发)决定启动时机,触发服务需匹配网络、设备等事件,状态变更可通过API、PowerShell或日志监听。

windows 服务的运行状态切换不是简单启停,而是由服务自身向服务控制管理器(scm)主动报告、并受控于启动类型与外部事件共同作用的结果。真正起效的切换依赖三要素:服务代码内正确调用 setservicestatus、scm 配置的启动类型生效、以及(对触发启动服务)特定系统事件被识别和送达。

服务状态切换的核心机制

服务状态(如 STOPPED → START_PENDING → RUNNING)不是 SCM 单方面决定的,而是服务进程在初始化或响应控制请求时,通过 SetServiceStatus 函数显式上报的。例如:

  • SCM 发出启动指令后,先将状态设为 SERVICE_START_PENDING,再调用服务的 ServiceMain;
  • 服务完成加载和初始化后,必须主动调用 SetServiceStatus 报告 SERVICE_RUNNING,否则 SCM 会认为启动失败;
  • 收到 SERVICE_CONTROL_STOP 后,服务应先报 SERVICE_STOP_PENDING,再执行清理逻辑,最后报 SERVICE_STOPPED。

状态转换必须符合有效路径(如不能从 RUNNING 直接跳到 STOPPED),否则 SCM 不报错但监控工具可能误判。

启动类型决定“谁来触发”以及“何时启动”

服务的启动类型(Start Type)存储在注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{svcname}\Start 中,它不控制当前运行状态,而决定系统如何介入:

  • 自动(2):系统启动时 SCM 主动拉起服务,服务需自行完成初始化并上报 RUNNING;
  • 手动(3):仅当用户或程序显式执行 sc start 或 net start 时触发;
  • 禁用(4):SCM 拒绝任何启动请求,即使调用 sc start 也会失败;
  • 触发启动(11):服务默认停止,仅当匹配预设的触发器事件(如网络连接、设备插入、用户登录)时,SCM 才启动它。

修改启动类型需用 sc config {svcname} start= auto(注意等号后有空格),该操作永久生效,但不改变当前运行状态。

windows-shell-syntax
windows-shell-syntax

在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……

下载

触发启动服务的事件配置与验证

触发启动服务依赖 SCM 对系统事件的监听能力,其触发条件在服务注册时定义,可通过 PowerShell 查看:

Get-ServiceTrigger -Name "wuauserv"

常见触发器类型包括:

  • NetworkEndpoint:监听特定端口或协议(如 HTTP、SMB);
  • DeviceInterfaceArrival:USB 设备接入、打印机连接等;
  • Custom:基于 ETW 事件 ID 或 Windows 日志事件(如 Event ID 7036 表示服务状态变更);
  • ServiceStart:依赖另一服务进入 RUNNING 状态后启动。

若服务未按预期启动,需检查:
– 触发器是否已注册(sc qtriggerinfo {svcname});
– 对应事件是否真实发生(如用 wevtutil qe System /q:"*[System[(EventID=10000)]]" 查看设备事件);
– 服务本身是否具备处理该触发的能力(部分服务仅声明支持,实际未实现事件响应逻辑)。

状态变化后的响应与通知

系统本身不会自动弹窗或发消息,但可通过以下方式感知状态变更:

  • 原生高效监听:调用 NotifyServiceStatusChange API,注册对单个服务或 SCM 全局的状态变更通知(如 SERVICE_NOTIFY_STOPPED),适用于后台监控程序;
  • 脚本化订阅:PowerShell 中用 Register-ObjectEvent 监听 StatusChanged 事件,适合临时排查;
  • 日志溯源:启用 SCM 操作日志(事件查看器 → Windows 日志 → System,筛选 Event ID 7036),可回溯每次状态变更的时间、服务名与新旧状态。

注意:所有监听方案都依赖服务正确上报状态——如果服务卡在 START_PENDING 不报 RUNNING,或崩溃后未报 STOPPED,通知就无法触发。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

457

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

920

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2952

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

976

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

869

2023.10.17

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

454

2023.10.17

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2676

2023.10.18

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

4992

2023.10.20

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn