Windows作業系統,背後有一大堆服務在運作著,早期是開發主控台應用程式(沒有UI介面的EXE執行檔),然後用工作排程器運作,這是一種解決方案,但是其實Visual Studio工具可以直接開發系統服務,首先要開新專案,選Windows 服務,如下圖:
不囉嗦,其他步驟就略過,直接到重點,建立好專案後,進入第一個設計模式畫面(Service1.cs)中,在畫面任一處按右鍵,出現選單選擇加入安裝程式,如下:
接著再安裝設計模式中會出現兩個元件,點選serviceInstaller1元件的屬性設定,如下圖紅框處都要修改一下。
同樣的點選serviceProcessInstaller1元件,有個服務執行的角色權限設定要調整一下,LocalSystem的權限是最大的,用甚麼權限就視服務本身做的事情來決定了。
編輯Service1.cs的兩個方法(OnStart、OnStop)後工作就完成了,你會發現直接按下綠色小箭頭開始是無法測試的,如下圖:
只好乖乖的把服務安裝起來,並且用NET START與NET STOP等命令提示字元進行測試。這個時候要靠.NET framework本身的工具(installutil.exe)來進行服務安裝與移除。
打開命令提示字元(需有本機管理員權限才能建立系統服務)
安裝服務
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\CSharpProject\MyService\bin\Debug\MyService.exe
移除服務
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u D:\CSharpProject\MyService\bin\Debug\MyService.exe
測試方式(建置方案後)
net start MyService
net stop MyService
因為沒有任何UI,那Debug 要怎麼做,這時候就要借重事件檢視器,然後工具會將所有的log,包含exception,都會寫到事件檢測器中,要自己寫log也很簡單,只要依照以下就可以:
this.EventLog.WriteEntry("WHO can help?");