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). 

進一步資料