用 vs 2017建立 windows 服務
建立專案
建立專案,在Windows下選擇Windows服務(.NET Framework)。建立名稱為indowsService_Test,如下圖。
系統預設建立Service1.cs。
開啟Serice1.cs的屬性頁,將ServiceName修改為ServiceTest,如下圖:
新增定時器
在vs 主選單中選“工具”項,再選“選擇工具箱項”,再勾選名稱空間為System.Timers的Timer,如下圖:
現在在工具箱中可以看到Timer元件如下圖所示。
將其拖入至Service1設計介面。將timer1的enabled 屬性設定為true,Interval屬性設定為1000。
雙擊timer1,自動生成timer1_Elapsed事件。
新增業務程式碼
編輯Service1.cs,引入 System.Threading名稱空間並修改程式碼如下:
public partial classService1 :ServiceBase
{
privateint numTimes;
public Service1()
{
InitializeComponent();
protected override void OnStart(string[] args)
{
thdStart = newThread(newThreadStart(timer1.Start));
thdStart.Start();
}
protectedoverridevoid OnStop()
{
}
privatevoid timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.timer1.Stop();
numTimes++;
string filePath =@"c:\ServiceTest.log";
string strCont =DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") +"第" + numTimes +"次執行。";
System.IO.File.AppendAllText(filePath, strCont);
this.timer1.Start();
}
}
為WindowsService_Test新增安裝程式
在Service1設計介面下,右鍵彈出選單,選擇“新增安裝程式”
在serviceProcessInstaller1屬性頁中將Account由User改為LocalSystem,
生成服務
生成專案。
新建一個目錄,將專案的\bin\Debug目錄下生成的所有檔案拷貝到該新的目錄,再在該目錄下建兩個批出處理檔案,檔名可分別為install.bat和uninstall.bat,內容分別如下:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /i WindowsService_Test.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe /u WindowsService_Testr.exe
注意:如果由於某種原因而使生成的平臺目標設為x86,則命令中的framework64要改成framework.
部署和解除安裝服務
以部署到windows server 2008伺服器為例,先須安裝NDP462-KB3151800-x86-x64-AllOS-ENU.exe即.netframework 4.6.2,如果在內網環境下安裝.net4.6.2,則需要安裝
MicrosoftRootCertificateAuthority2011.cer證書。安裝此證書的過程大楖如下:
1.下載證書:http://go.microsoft.com/fwlink/?LinkID=747875&clcid=0x409;
2.開始-執行-MMC
3.檔案-刪除管理單元(Ctrl+M)
4.證書-計算機帳戶(其他的保持預設,無限下一步)。
5.回到窗體,展開:證書-受信任的根證書頒發機構-證書。
6.右擊展開選單,所有任務-匯入
7.選擇下載好的cer檔案,然後無限下一步。
NDP462-KB3151800-x86-x64-AllOS-ENU.exe安裝完畢後,將上述的資料夾拷貝到伺服器的磁碟上,執行其中的install.bat,然後再開啟管理工具-服務,找到WindowsService_Test項,雙擊後點“啟動”即可啟動服務,往後服務啟動時會自動啟動該服務。
要解除安裝服務,只需要執行上述已經拷貝到伺服器的磁碟中的資料夾內的uninstall.bat檔案即可。