用c#中創建一個windows服務非常簡單,與windows服務相關的類都在System.ServiceProcess命名空間下。
每個服務都需要繼承自ServiceBase類,并重寫相應的啟動、暫停、停止等方法。
windows服務的相關信息是存放與注冊表中的,所以他可以在不需要用戶登錄的情況下自動運行,在c#中你不需要再直接向注冊表中添加信息了,c#提供了服務安裝類 ServiceProcessInstaller和ServiceInstaller來實現服務的安裝。
首先,用vs創建一個windows服務項目
成功后你可以看到
Program中只包含服務運行的相關信息
Service1.cs就是我們需要的服務類,與windows服務相關的基本操作大都可以在這里找到,如:Start,Stop,Pause,Continue等,我們要做的就是根據這些操作做不同的處理就可以了。
我們先在服務Start和Stop時分別記錄一條信息到D盤
雙擊項目中的Service.cs轉到服務設計界面,在空白處右鍵選擇“添加安裝程序”
vs會自動創建一個默認名稱為ProjectInstaller.cs的文件并轉到相應的設計界面
默認添加兩個類 serviceProcessInstaller1和serviceInstaller1,第一個主要用來設置服務所屬賬戶,關系到服務的運行,第二個是服務信息描述,如:服務名、是否自動啟動等
右鍵serviceProcessInstaller1屬性,將Account屬性選擇為LocalSystem
右鍵serviceInstaller1屬性,將StartType屬性設為Automatic(自動啟動),Description為“我的第一個windows服務”
全部保存后生成,找到生成的程序。
由于windows服務不能通過雙擊直接運行,所以我們需要借助.net提供的InstallUtil.exe來安裝服務。
按回車開始安裝,成功后會提示 “提交”階段已成功完成,如果失敗則是“回滾”階段已成功完成
打開windows服務管理器就能看到我們安裝的服務,默認服務安裝成功后不會立刻啟動,需要我們手動啟動
如果不出意外,會顯示已啟動
到D盤目錄下找到Service1.txt,打開會看到我們填入的信息,說明我們做的windows服務已經成功了。
要卸載windows服務可以用InstallUtil.exe /u WindowsService1.exe來卸載或通過系統命令 sc delete 服務名來卸載。
新聞熱點
疑難解答