2018-08-23 根據別人的整理
開發Windows服務
一、 開發Windows服務
1、 新建項目,選擇Windows服務,如下圖:
2、 創建好后,編譯器會自動創建一些文件,其中會有一個Service1類文件,該文件是服務的關鍵,我們可以將其重命名,這里我將其命名為MainService,如下圖:
3、 在MainService的后台代碼中會自動創建一些方法,包括服務的啟動和停止方法等,如下圖:
4、 將服務啟動時要執行的操作放在OnStart方法中,服務停止時要執行的操作放在OnStop方法中
5、 在MainService.cs設計器中,單擊郵件,選擇選擇添加安裝程序,便會生成一個ProjectInstaller.cs的文件,如圖所示:
6、 設置ProjectInstaller.cs的屬性,切換到屬性設置界面
(1) 選擇serviceInstaller1,並設置相應屬性如下圖所示:
其中:Description屬性用於設置服務安裝之后再服務界面上顯示的描述信息;
DisplayName屬性用於設置服務安裝之后再服務界面上顯示的服務名稱;
ServiceName屬性用於設置服務的名稱,此名稱必須與ServiceBase類的ServiceName屬性設置的名稱一致,該名稱用於系統標識此服務,可以理解成DisplayName為ServiceName的別名;
StartType屬性用於設置服務的啟動方式。
(2) 選擇serviceProcessInster1,設置其屬性如下:
此處主要設置Account屬性,該屬性用來指示運行該服務時的賬戶類型,一般設置為LocalSystem。
7、 到此步一個簡單的windows服務就創建好了,編譯程序會生成一個EmailService.exe的可執行文件,接下來便是安裝服務了。
二、Windows服務的安裝
命令安裝
-------------------------------------此處為自己命令安裝成功------------------------------------------------------------------
管理員身份運行cmd
服務 安裝:sc create 服務名 binpath= “D:\ 服務exe文件地址\需要安裝的服務.exe” displayname= "服務顯示名稱" start= "auto"
服務刪除 :sc delete 服務名
給服務添加描述: sc description 服務名 “具體服務名稱”
------------------------------------以下方法未試-------------------------------------------------------------------
Windows服務的安裝有多種方式,比如可以再cmd下調用命令來安裝,也可以寫一個安裝程序來安裝,此處介紹使用bat批處理來安裝。
1、 安裝Windows服務需要用到InstallUtil.exe程序,該程序位於:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319 .NET4.0
C:\Windows\Microsoft.NET\Framework64\v2.0.50727 .NET2.0
2、 我們可以再批處理命令中直接調用以上目錄中的InstallUtil.exe程序,也可以將該程序拷貝到應用程序的目錄下,此處我選擇獎該程序拷貝到應用程序的目錄下,同時將批處理文件也創建在應用程序的的目錄下,如下圖所示:
3、 注冊服務的批處理命令如下所示:
%~dp0\InstallUtil.exe %~dp0\EmailService.exe
Net Start EmailService --這里是安裝完成之后啟動服務
sc config EmailService start= auto –這里是將服務設置為自動啟動
pause
其中%~dp0表示批處理所在的目錄;
4、 注銷服務的批處理命令如下所示:
%~dp0\InstallUtil.exe /u %~dp0\EmailService.exe
pause
5、 啟動服務的批處理命令如下所示:
net start EmailService
pause
6、 停止服務的批處理命令如下所示:
net stop EmailService
pause
7、 當我們運行注冊服務批處理命令之后便會進行服務安裝,如果安裝成功,我們在服務界面將看到該服務,如下圖所示:
8、 安裝服務時的注意事項
(1) 安裝程序InstallUtil.exe的版本必須於創建Windows服務的.NET版本一致;
(2) 如果是Win7以上版本的系統,在運行批處理命令時,應以管理員身份運行;
(3) 如果是Win7以上版本的系統,應特別注意安裝程序和應用程序的路徑,以便能夠正確的寫批處理命令。