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.