用Visual Studio開發Window作業系統服務

Windows作業系統,背後有一大堆服務在運作著,早期是開發主控台應用程式(沒有UI介面的EXE執行檔),然後用工作排程器運作,這是一種解決方案,但是其實Visual Studio工具可以直接開發系統服務,首先要開新專案,選Windows 服務,如下圖:

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?");

More From Forest Beat

冬の前田森林公園のフリ

在Linux中列出目錄的空間使用大小

列出檔案大小的指令是ls,但是這個指令列出的目錄大小是固定的,又不能自動加總,所以想要知道/home/下各個使用者用了多少檔案空間,那可以參考以下指令
技術
0
minutes
高層ビルのフリー写真素材

Windows 10中的小算盤不見了?

如題小算盤不見了怎麼辦?其實很簡單,搜尋商店,然後輸入關鍵字,安裝一下就可以~~~
技術
0
minutes
桜のフリ

Top 20 Best Programming Languages To Learn in 2024

IT小菜雞必需掌握一種以上的程式語言,因為程式語言是實現軟體解決方案的工具。
技術
0
minutes
サクラのフリ

快速了解MVC、MVP、MVVM、MVI架構的演進

MVC、MVP、MVVM、MVI 都是軟體架構模式,用來組織和管理程式碼,提高程式碼的可讀性、可維護性和可擴展性。
技術
0
minutes
spot_imgspot_img