服务控制管理器

科技工作者之家 2020-11-17

服务控制管理器(Service Control Manager,简称SCM)是Windows NT操作系统中的特殊系统进程,其控制Windows服务进程的启动、停止和交互。

简介它的可执行文件位于%SystemRoot%\System32\services.exe。服务进程与SCM的交互通过已定义的API完成,同一API也被交互式Windows服务管理工具使用,例如MMC扩展Services.msc和命令行的服务控制实用工具sc.exe。1

实现延迟的自动启动服务延迟的自动启动服务在Windows Vista中被添加,目的是解决系统启动耗时过长的问题,以及提高关键服务的启动速度。在设计之初,自动启动的服务初始化方法是为其他应用程序和服务依赖的基本系统服务所涉及。SCM仅在处理所有非延迟的自动启动服务后初始化延迟服务(调用ScInitDelayStart()函数)。此函数用工作线程延迟并排队工作项(默认120秒)。除在延迟之后初始化,延迟与非延迟的自动启动服务没有其他区别。1

设备驱动程序注册表值Type(类型)为SERVICE_KERNEL_DRIVER或SERVICE_FILE_SYSTEM_DRIVER的服务会被特殊处理:这代表其为设备驱动程序,ScStartService()会调用ScLoadDeviceDriver()函数来加载相应的驱动程序(通常是扩展名为.sys的文件,大多位于%SystemRoot%\System32\Drivers\目录)。为了此目的,NtLoadDriver系统调用已被引用,SeLoadDriverPrivilege也已添加到SCM进程。1

网络驱动器SCM还提供了一个与Windows服务无关的额外功能:它会在一个网络驱动器连接被创建或删除时通知图形用户界面应用程序(例如Windows Explorer),通过广播窗口消息WM_DEVICECHANGE。1

Windows服务Windows服务是指Windows NT操作系统中的一种运行在后台的计算机程序。它在概念上类似于Unix守护进程。Windows服务必须匹配服务控制管理器(负责管理Windows服务的组件)的接口规则和协议。

Windows服务可以配置为在操作系统启动时运行,并且在Windows运行期间持续在后台运行。服务也可以手动或基于某个事件而启动。Windows NT操作系统包含众多服务,分别运行在三种用户帐户环境中:系统、网络服务和本地服务。这些Windows组件通常采用Windows服务托管进程。因为Windows服务运行在其自身的专用用户帐户中,它们可以在用户未登录时活动。

在Windows Vista之前,安装为“交互服务”的服务可以与Windows桌面交互和显示图形用户界面。但在Windows Vista中,交互服务已被弃用,并且可能无法正常运行。2

Svchost.exeSvchost.exe是微软的窗口操作系统里专门用来运行DLL程序的前导程序。 它正确的位置应该位于操作系统盘根目录的\Windows\system32目录下(64位系统则亦在系统盘根目录的\Windows\SysWOW64)。如果在其他地方看到,那么很可能是病毒程序。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。