有情懷,有幹貨,微信搜尋【荒古傳說】關注這個不一樣的程式員。
最近寫了好多次程序守護程式,今天在這裡總結一下。
用到的知識點:
1、在程式中啟動程序,
2、寫Windows服務,
3、以及在Windows服務中啟動帶界面的程式
關于第三點的問題,我在我的上一篇部落格單獨介紹了解決方案:C#做服務使用Process啟動外部程式沒有界面
這裡主要講述怎樣用C#做一個服務這個服務可以監視某個程序,如果程序不存在則啟動這個程序(還可以通過讓監視程式和程序守護服務定期交換資料的方法來更準确的進行監測)
建立Windows服務項目
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX0Z0ValnUyg1bOhVY1xWbaZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zMxUDNxYzMwIzMwMDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
實作服務要執行的操作
檢視services代碼,在對應位置寫入要執行的代碼:
protected override void OnStart(string[] args)
{
//服務開啟執行代碼
}
protected override void OnStop()
{
//服務結束執行代碼
}
protected override void OnPause()
{
//服務暫停執行代碼
base.OnPause();
}
protected override void OnContinue()
{
//服務恢複執行代碼
base.OnContinue();
}
protected override void OnShutdown()
{
//系統即将關閉執行代碼
base.OnShutdown();
}
添加安裝程式
1、在services的設計界面右鍵,選擇添加安裝程式:
生成serviceInstaller1和 serviceProcessInstaller1兩個元件 。
2、把serviceInstaller1的屬性ServiceName改寫為你的服務程式名,并把啟動模式設定為AUTOMATIC
3、把serviceProcessInstaller1的屬性account改寫為 LocalSystem
4、最後通過從生成菜單中選擇生成來生成項目
安裝解除安裝Windows服務
如果你在你需要的函數裡面寫過你需要的方法後,直接點運作是不可運作的。
1、安裝Windows服務
安裝指令:InstallUtil.exe MyServiceLog.exe
InstallUtil存在路徑為:C:\WINDOWS\Microsoft.NET\Framework\.NET版本号
複制C:\WINDOWS\Microsoft.Net\Framework\版本号 路徑中的InstallUtil.exe 到bin/debug或bin/release檔案夾中
在指令行視窗中(管理者權限打開),cd到服務Debug目錄下運作安裝指令,安裝過程如下圖所示:
安裝成功之後手動啟動服務:
2、解除安裝window 服務
指令:InstallUtil.exe MyServiceLog.exe /u
如果修改這個服務,但是路徑沒有變化的話是不需要重新注冊服務的,直接停止服務,然後用新的檔案覆寫原來的檔案即可,如果路徑發生變化,應該先解除安裝這個服務,然後重新安裝這個服務。
文章持續更新,可以微信搜一搜「 荒古傳說 」第一時間閱讀。