此文旨在記錄個人對windows服務的理解以及學習記錄,高人可以直接繞行。
1.Windows 服務體系結構
@http://technet.microsoft.com/zh-cn/library/aa998749(v=exchg.65).aspx
Windows 服務(也稱服務應用程序)是無論用戶是否登錄都運行在 Windows 計算機上的應用程序。Windows 服務包含一個可執行文件、一個存儲應用程序組件的目錄,以及定義服務參數的注冊表設置。Windows 服務實現一個可編程的接口,SCM 可以使用該接口來控制服務。Windows 服務既可以在系統啟動時自動啟動,也可以由用戶使用服務控制程序來手動啟動。服務控制程序是使用 SCM 功能來控制服務的應用程序。例如,“服務”工具和命令行工具 net.exe 和 SC.exe 就是服務控制程序。
下列圖說明了 Windows 服務體系結構。
注意:SCM 進程是一個遠程過程調用 (RPC) 服務器服務。為了控制遠程計算機上的服務,服務控制程序使用 RPC 在本地或通過網絡與 SCM 通信。
2. .NET Windows服務(名稱空間System.ServicesProcess)
1.服務程序
.NET Framework的服務的創建需要繼承ServiceBase類.ServiceBase類用于注冊服務、響應開始、停止等請求。
2.服務控制程序
ServiceController類可以獲取服務的相關信息,如服務名稱、服務類型以及控制服務的開始、停止等操作。
3.服務的安裝與配置
服務必須在注冊表中配置(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services)。
服務的安裝可以有兩種方式:
1.手動寫注冊表
通過regedit命令,我們可以打開注冊表編輯已有的服務或添加新的服務項。
2.服務安裝程序
ServiceProcessInstaller類 用于配置服務進程,該配置信息為該服務進程下的所有服務所共享。
ServiceInstaller類 用于配置具體的服務,服務進程中的每個服務都需要一個屬于自己的ServiceInstaller實例。
RunInstallerAttribute特性 指定一個安裝程序(繼承Installer),在安裝程序集時,是否可以被自定義安裝程序或安裝工具(如installutil.exe)調用。
3.服務控制程序簡單示例
源代碼:?http://files.cnblogs.com/BugQiang/BugQiang.SCM.rar