Windows服务

微軟視窗操作系統組件
(重定向自后台服务

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服务
概念

参考资料

  1. ^ 1.0 1.1 1.2 Services overview. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-03-05).  引用错误:带有name属性“Services snap-in”的<ref>标签用不同内容定义了多次
  2. ^ Services. Microsoft Developer Network. Microsoft. [29 March 2013]. (原始内容存档于2008-04-08). 
  3. ^ New Elevation PowerToys for Windows Vista. TechNet Magazine. Microsoft. June 2008 [21 June 2013]. (原始内容存档于2016-08-21). The service CmdAsSystem is configured as interactive whose support is being deprecated. The service may not function properly. The problem is that this script tries to create and start an interactive service. Interactive services will not function correctly due to Session 0 Isolation in Windows Vista. 
  4. ^ Services in Windows. MSDN. Microsoft. 18 October 2010 [21 June 2013]. (原始内容存档于2013-12-24). 
  5. ^ Start, stop, pause, resume, or restart a service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-07-14). 
  6. ^ ServiceInstaller.DelayedAutoStart Property (System.ServiceProcess). Microsoft. [April 2013]. (原始内容存档于2017-12-01)See Remarks section 
  7. ^ How to create a Windows service by using Sc.exe. Support. Microsoft. 11 September 2011 [29 March 2013]. (原始内容存档于2015-03-03). 
  8. ^ Command-line reference A-Z: SC. TechNet. Microsoft. [8 January 2014]. (原始内容存档于2018-02-03). 
  9. ^ 9.0 9.1 Command-Line Reference: Sc. TechNet. Microsoft. [8 January 2014]. (原始内容存档于2017-08-26). Windows 7, Windows 8, Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Vista  引用错误:带有name属性“sc.exe”的<ref>标签用不同内容定义了多次
  10. ^ Get-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-03-08). 
  11. ^ New-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  12. ^ Restart-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  13. ^ Resume-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  14. ^ Set-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  15. ^ Start-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  16. ^ Stop-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  17. ^ Suspend-Service. TechNet. Microsoft. [29 March 2013]. (原始内容存档于2016-10-25). 
  18. ^ Start, stop, pause, resume, or restart a service. TechNet. Microsoft. [8 January 2014]. (原始内容存档于2016-07-14). 
  19. ^ How To Create a User-Defined Service. Support. Microsoft. [29 March 2013]. (原始内容存档于2015-03-02). 

进一步资料