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

進一步資料