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

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

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

管理

Windows管理员可以管理服务,通过:

服务扩展

服务扩展是基于Microsoft管理控制台提供的一个组件,它可以连接到本地电脑或网络上的远程电脑,用户可以:[1]

  • 查看已安装服务的列表,包括服务名称、说明和配置
  • 开始、停止、暂停或重新启动服务[5]
  • 适用时指定服务的参数
  • 更改启动类型。可接受的启动类型有:
    • 自动:服务会在系统登录时启动。
    • 自动(延迟启动):服务会在系统启动后过一会启动。此选项在Windows Vista中引入,目的是降低系统启动后到达桌面的等待时间。但是,不是所有服务都支持延迟启动。[6]
    • 手动:服务只会在被明确调用时启动。
    • 禁用:服务被禁用,开机时将不会启动,开机后必须要再设置为自动或手动才能将服务激活。
  • 更改各服务运行的用户帐户上下文
  • 配置服务发生失败时应采取的恢复操作
  • 查阅服务的依赖关系,了解服务或设备驱动程式依赖于哪些特定服务,或者特定服务依赖于哪些服务或设备驱动程式
  • 导出服务列表为文本文件或CSV文件

Sc.exe

服务扩展的命令行接口是Sc.exe,名为“服务控制”实用工具。[7]此工具在Windows XP[8]及更高版本中提供。[9]

Sc.exe的管理范围仅限于本地电脑。从Windows Server 2003开始,Sc.exe不仅能做到“服务扩展”支持的操作,还可以安装和卸载服务。[9]

Windows PowerShell

Windows PowerShell本质上可以管理Windows服务,相关命令如下:

其他管理工具

在服务扩展、Sc.exe和PowerShell以外,Windows还包括第三方可以操作的组件。Net.exe可以启动、停止、暂停或恢复一个Windows服务。[18]在Windows Vista及更高版本中,Windows 任务管理器可以显示已安装服务的列表和启动与暂停它们。MSConfig可以启用或禁用Windows服务。

开发

编写原生服务

可以使用如Microsoft Visual StudioEmbarcadero Delphi等开发工具创建一个Windows服务。为了成为一个Windows服务,程序在编写上必须处理“服务控制管理器”的启动、停止和暂停消息。服务控制管理器是负责启动和停止服务的Windows组件。

封装应用程式为服务

Windows Resource Kit for Windows NT 3.51Windows NT 4.0Windows 2000提供工具来控制服务的注册和使用:SrvAny.exe作为服务封装器来处理预期的服务接口(例如处理service_start,然后响应service_startedservice_failed)并允许配置任何可执行文件或脚本作为一个服务。Sc.exe可以安装、启动、停止和卸载新服务。[19]

参见

Windows服务
概念

参考资料

进一步资料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.