Windows服务是指Windows NT操作系统中的一种运行在后台的计算机程序。[1]它在概念上类似于Unix守护进程。[1]Windows服务必须符合服务控制管理器(负责管理Windows服务的组件)的接口规则和协议。[2]
Windows服务可以配置为在操作系统启动时运行,并且在Windows运行期间持续在后台运行。服务也可以手动或基于某个事件而启动。Windows NT操作系统包含众多服务,分别运行在三种用户帐户环境中:系统、网络服务和本地服务。这些Windows组件通常采用Windows服务托管进程。因为Windows服务运行在其自身的专用用户帐户中,它们可以在用户未登录时活动。
在Windows Vista之前,安装为“交互服务”的服务可以与Windows桌面交互和显示图形用户界面。但在Windows Vista中,交互服务已被弃用,并且可能无法正常运行。[3][4]
管理
Windows管理员可以管理服务,通过:
- “服务”扩展(在Windows控制面板的“管理工具”中)
- Sc.exe
- Windows PowerShell
服务扩展是基于Microsoft管理控制台提供的一个组件,它可以连接到本地计算机或网络上的远程计算机,用户可以:[1]
- 查看已安装服务的列表,包括服务名称、说明和配置
- 开始、停止、暂停或重新启动服务[5]
- 适用时指定服务的参数
- 更改启动类型。可接受的启动类型有:
- 自动:服务会在系统登录时启动。
- 自动(延迟启动):服务会在系统启动后过一会启动。此选项在Windows Vista中引入,目的是降低系统启动后到达桌面的等待时间。但是,不是所有服务都支持延迟启动。[6]
- 手动:服务只会在被明确调用时启动。
- 停用:服务被停用,開機時将不会启动,開機後必須要再設定為自動或手動才能將服務啟用。
- 更改各服务运行的用户帐户上下文
- 配置服务发生失败时应采取的恢复操作
- 查阅服务的依赖关系,了解服务或设备驱动程序依赖于哪些特定服务,或者特定服务依赖于哪些服务或设备驱动程序
- 导出服务列表为文本文件或CSV文件
服务扩展的命令行接口是Sc.exe,名为“服务控制”实用工具。[7]此工具在Windows XP[8]及更高版本中提供。[9]
Sc.exe的管理范围仅限于本地计算机。从Windows Server 2003开始,Sc.exe不仅能做到“服务扩展”支持的操作,还可以安装和卸载服务。[9]
Windows PowerShell本质上可以管理Windows服务,相关命令如下:
在服务扩展、Sc.exe和PowerShell以外,Windows还包括第三方可以操作的组件。Net.exe可以启动、停止、暂停或恢复一个Windows服务。[18]在Windows Vista及更高版本中,Windows 任务管理器可以显示已安装服务的列表和启动与暂停它们。MSConfig可以启用或禁用Windows服务。
开发
可以使用如Microsoft Visual Studio或Embarcadero Delphi等开发工具创建一个Windows服务。为了成为一个Windows服务,程序在编写上必须处理“服务控制管理器”的启动、停止和暂停消息。服务控制管理器是负责启动和停止服务的Windows组件。
Windows Resource Kit for Windows NT 3.51、Windows NT 4.0和Windows 2000提供工具来控制服务的注册和使用:SrvAny.exe
作为服务封装器来处理预期的服务接口(例如处理service_start
,然后响应service_started
或service_failed
)并允许配置任何可执行文件或脚本作为一个服务。Sc.exe
可以安装、启动、停止和卸载新服务。[19]
参见
- Windows服务
- 概念