Windows系統服務面面觀(上)

作者: 賴榮樞
http://www.goodman-lai.idv.tw

系統服務位居NT家族作業系統的重要角色,這類的程式通常沒有使用者操作介面,大多在幕後默默執行,因此使用者可能會忽略了這類程式的存在;絕大多數伺服端軟體都是以這種方式執行,並藉由TCP/IP(即適當的協定和通訊埠)與用戶端或其他伺服端通訊,而這也更為凸顯了系統服務的重要性。

系統服務的確影響Windows甚鉅,您可能在討論系統安全的書籍讀過類似這樣的話:「為了Windows系統安全,應該關閉不必要的系統服務」;或許您也曾經在說明Windows系統效能的文件看過類似的說明:「為了提高Windows執行效能,您可以關閉不必要的系統服務」。

系統服務能不能關閉、該不該關閉,端視您的電腦需不需要系統服務所提供的功能,也就是說,不同角色、身處不同環境的電腦,所需要的系統服務也就不同;例如網域伺服器所需要的系統服務,與檔案伺服器就有些為差異。因此本文希望能列舉、說明常用的系統服務,以作為使用者調校Windows的參考資料。

本頁內容

何謂系統服務
常用的系統服務
未完待續

何謂系統服務

Service這個字在Windows世界出現的相當頻繁,相對的,中譯的「服務」也經常可見於中文的Windows世界。因此在正式說明本文之前,必須先對本文意欲探討的「系統服務」作個清楚的說明。

本文指稱的「系統服務」,是指由SCM(service control manager,服務控制管理員)所執行、控制的程式。這種程式通常稱為Windows Services,也因源起於Windows NT,因此之前稱為NT Services,而且只有NT血緣的Windows才支援這種類型的程式(Windows 2000/XP/2003都支援,但Windows 95/98/Me則不支援)。

系統服務是由Windows系統的SCM控制,使用者可以利用圖形操作介面或命令列,透過SCM控制系統服務的啟動、暫停、繼續執行、結束;例如系統管理工具的「服務」(services.msc),就是經常用來操控系統服務的MMC(Microsoft Management Console)工具,而Net指令搭配Start、Stop、Pause、Continue,則可以從命令列環境操控系統服務。系統服務是由SCM啟動,執行之初必須向SCM註冊,而SCM則會以登錄資料庫維護系統服務的相關資訊(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services)。

系統服務可以在任何使用者登入系統之前,就從系統開機時自動執行,就算開機之後沒有使用者登入Windows系統,系統也可以自動執行系統服務。也就是因為系統服務不需要使用者登入系統亦能執行,因此需要在背景持續執行、且與系統層級功能有關的軟體,通常就會實作成系統服務。

系統服務程式通常會有三個名稱(以Windows Time為例):一個是程式執行檔的檔案名稱,例如Svchost.exe;第二個是用來顯示,因此也稱為「顯示名稱」或friendly name(例如Windows Time);第三個通常是用在命令列操控,也稱為「服務名稱」或system name(以此例為W32Time)。一般來說,一支系統服務程式可能內附了好幾個系統服務,而因為系統服務程式在執行之初需要向系統的SCM註冊,因此SCM能瞭解程式裡的細節,所以若是以GUI管理工具設定系統服務的選項,管理工具能透過SCM顯示、設定各個系統服務;但若要以命令列指令操控,就需要指定系統服務的「服務名稱」。

系統服務有三種啟動類型:

  • 自動(Automatic):系統服務會隨電腦啟動而自動執行。

  • 手動(Manual):系統服務「不」會隨電腦啟動而自動執行,但可以由使用者或其他程式啟動執行。

  • 已停用(Disabled):系統服務無法被啟動。

只要系統服務不是設定成「已停用」,都可以由使用者或其他程式調整其執行狀態,包括啟動(Start)、停止(Stop,也就是結束)或繼續(Resume)、暫停(Pause,尚未結束,還留在記憶體)。

要注意的是,系統服務是一種程式的規格,因此其他的廠商也可以利用這種規格來實作自家的軟體。再者,不同版本Windows所內建的系統服務也會有所不同。

每個系統服務也都有其登入的身份,而不同的身份可能會有不同的執行權。此外,系統服務也會互相依存;例如假設A和B相互依存,若停用A,那麼B也無法啟動。如果系統服務的登入身份權限不足,或者停用了執行其他系統服務需要的系統服務,都會影響系統服務的正常執行,而如果系統服務的執行出了問題,通常都必須利用事件檢視器觀閱錯誤訊息。

常用的系統服務

以下我將簡要說明常用的Windows系統服務(版本則以Windows Server 2003為主,也會穿插若干Windows XP的系統服務),這些說明能作為您是否要停用系統服務的參考。括號裡的是系統服務的服務名稱(SCM對服務名稱是不分大小寫),而我也會列出伺服端系統服務所使用的協定以及通訊埠。此外,以下所列舉的系統服務包含了Windows內建(例如Alerter)、額外安裝了Windows內建的功能才會出現(例如Microsoft POP3 Service),或者額外安裝了伺服器軟體才會出現(例如MSSQLSERVER),而且有些系統服務適用於用戶端電腦,有些是伺服端專屬,有些則是兩者都有。

  • Alerter(Alerter):這個系統服務與Messenger(不是微軟的即時通訊軟體)類似,因此一起說明。這兩個可算是古老的系統服務了,它們使用相同的方式提供簡易的網路訊息傳遞功能,例如Messenger可以讓Net Send指令將文字訊息傳到另一部電腦(不過Net Send及Net Name等指令已沒有作用),而Alerter的原始目的是讓系統管理員將系統管理的警示傳給其他電腦。但是這兩個系統服務的功能太陽春,而且有安全疑慮,因此許多版本的Windows Service Pack都會停用這兩個系統服務,而且Windows Server 2003預設也已停用兩個系統服務(您也應該停用)。

  • Application Layer Gateway Service(ALG):網際網路連線共用(ICS)和Windows防火牆需要這個系統服務,Windows Server 2003的預設啟動類型是手動。這個系統服務不只能讓網路協定通過Windows防火牆,還能讓網路協定於ICS之後運作;ALG會開啟通訊埠並更改封包裡的通訊埠、IP位址等資料。ALG是以外掛的方式協助特定的網路協定與Windows防火牆和ICS共同運作,也就是說,各種網路協定就可能需要不同的ALG外掛。

  • Application Management(AppMgmt):Windows 2000開始提供的軟體安裝服務需要這個系統服務(例如透過網路將軟體「指派」、「發行」給用戶端,或者從用戶端將軟體移除)。Windows Server 2003的預設啟動類型是手動。

  • ASP.NET State Service(aspnet_state):這個系統服務會儲存階段(session)資料,讓ASP.NET可以利用socket作行程外(out-of-process)的通訊。系統預設並不會安裝這個系統服務,除非您為網站伺服器安裝了ASP.NET。

  • Automatic Updates(Wuauserv):用在「自動更新」的系統服務,讓電腦能夠自動連上微軟的網站檢查、下載、安裝修補程式;不建議將此系統服務設為停用。

  • Background Intelligent Transfer Service(BITS):這個系統服務能利用HTTP 1.1在網路閒置時於背景傳送資料,Windows Update會用到這項系統服務。不建議設為停用。

  • Certificate Services(CertSvc):這個系統服務是用來發行、管理數位憑證,並且是以RPC和DCOM與用戶端通訊;諸如S/MIME(Secure/Multipurpose Internet Mail Extensions)、SSL(Secure Sockets Layer)、EFS(Encrypting File System)、IPSec(IP Security)、智慧卡等眾多的應用登需要數位憑證。

    協定

    通訊埠

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • ClipBook(ClipSrv):讓Windows能透過網路共享剪貼簿資料的系統服務。因為有安全疑慮,因此應該停用。Windows Server 2003預設已停用。停用這項系統服務只是不能共用遠端電腦的剪貼簿資料,並不會影響本機電腦的應用程式彼此透過剪貼簿共用資料。

  • Cluster Service(ClusSvc):如果想讓伺服器具備叢集功能,就不能停用這項系統服務。Web版的Windows Server 2003並不支援叢集功能。

    協定

    通訊埠

    Cluster Services(UDP)

    3343

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • COM+ Event System(EventSystem):與COM+有關的系統服務,能自動將COM元件相關的事件傳送給元件的訂閱者(subscriber,相對於提供COM元件功能的發行者,publisher)。建議不應停用這項系統服務,可設為手動。

  • COM+ System Application(COMSysApp):這項系統服務掌管COM+的服務,並且管理COM+應用程式的設定。如果停用這項系統服務,COM+應用程式就無法執行,而且也無法管理系統的COM+或OLE機制。

  • Computer Browser(Brower):與Server、Workstation等系統服務共同提供Windows網路功能。Windows Server 2003預設為自動。

  • Cryptographic Services(CryptSvc):這項系統服務提供了金鑰管理的功能,是由類別目錄資料庫服務、受保護的根目錄服務、金鑰服務等三項服務所構成。

  • DHCP Server及DHCP Client(DHCPServer/Dhcp):用在DHCP協定的系統服務。

    協定

    通訊埠

    DHCP Server(UDP)

    67

    MADCAP(UDP)

    2535

  • Distributed File System(Dfs):分散式檔案系統伺服端所需要的系統服務,Windows Server 2003預設是自動。

    協定

    通訊埠

    NetBIOS Datagram Service(UDP)

    138

    NetBIOS Session Service(TCP)

    139

    LDAP Server(TCP)

    389

    LDAP Server(UDP)

    389

    SMB(TCP)

    445

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • Distributed Link Tracking Server及Distributed Link Tracking Client(TrkSvr/TrkWks):用來追蹤網域裡分散式檔案的移動情形。

    協定

    通訊埠

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • Distributed Transaction Coordinator(MSDTC):這是個用來協調分散式環境「交易」、管理相關資源的系統服務。分散式環境裡的訊息、資料庫、檔案系統大多以「交易」的方式進行傳遞,MSDTC可以擔任交易時的協調工作,例如COM+、MSMQ或SQL Server都需要這項系統服務。Windows Server 2003預設是自動啟用這項系統服務。

    協定

    通訊埠

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • DNS Server及DNS Client(DNS/Dnscache):非常重要的網路系統服務,是用來提供網路名稱服務(Domain Name Service)。

    協定

    通訊埠

    DNS(UDP)

    53

    DNS(TCP)

    53

  • Error Reporting Service(ERSvc):用來將系統的錯誤回報給微軟的系統服務,預設都是自動。

  • Event Log(Eventlog):記錄由系統及程式所產生的事件訊息,並可由『事件檢視器』關閱所記錄的事件訊息。預設都是自動。

    協定

    通訊埠

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • Fax Service(Fax):提供用戶端傳真功能的系統服務。

    協定

    通訊埠

    NetBIOS Session Service(TCP)

    139

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

    SMB(TCP)

    445

  • File Replication(NtFrs):這項系統服務讓Windows 2000/2003網域控制器能夠複製SYSVOL資料夾的內容。

    協定

    通訊埠

    RPC(TCP)

    135

    TCP

    1024到65534之間的隨機通訊埠

  • File Server for Macintosh(MacFile):麥金塔電腦能夠透過網路,存取執行這項系統服務的伺服器。

    協定

    通訊埠

    File Server for Macintosh(TCP)

    548

  • FTP Publishing Service(MSFTPSVC):這項系統服務可以讓電腦具備FTP伺服器的功能,IIS的FTP功能就是使用這項系統服務。

    協定

    通訊埠

    FTP control(TCP)

    21

    FTP default data(TCP)

    20

    TCP

    1024到65534之間的隨機通訊埠

  • Help and Support(helpsvc):Windows的『說明及支援』需要這項系統服務才能運作。

未完待續

本文列舉了常用的Windows系統服務(而且將重點放在伺服端),而Windows的系統服務當然不只本文所列,在下一篇的文章,我們將繼續說明其他的系統服務,並且也會說明不同角色的伺服器,所需要的最小、最基本的系統服務。

參考資料

  • Windows System Programming 3/e中文版(碁峰出版,Johnson M. Hart著,賴榮樞譯)

  • Service overview and network port requirements for the Windows Server system