C# 利用 Windows服務模板 創建、安裝與卸載Windows服務


什么是Windows服務?
Windows服務,是在Windows操作系統下能夠長時間運行的可執行應用程序。
它們在計算機啟動后用戶登錄前就執行,啟動方式分自動和手動,可以重啟或者暫停,且沒有任何用戶界面。
Windows服務典型的應用是緩存、異步支付訂單...

C#如何創建Windows服務?

利用Windows服務模板

新建項目

單擊右鍵,選擇添加安裝程序

添加成功后效果如下

分別配置serviceInstaller1、serviceProcessInstaller1的屬性

編寫服務主體邏輯代碼,比如在文本文件中寫入一句話

 1 using System;
 2 using System.IO;
 3 using System.ServiceProcess;
 4 using System.Configuration;
 5 
 6 namespace MyWindowsService
 7 {
 8     public partial class Service1 : ServiceBase
 9     {
10         public Service1()
11         {
12             InitializeComponent();
13         }
14 
15         /// <summary>
16         /// 啟動服務時執行
17         /// </summary>
18         /// <param name="args"></param>
19         protected override void OnStart(string[] args)
20         {
21             FileStream fs = new FileStream(ConfigurationManager.AppSettings["LogFile"].ToString(), FileMode.OpenOrCreate, FileAccess.Write);
22             StreamWriter sw = new StreamWriter(fs);
23             sw.BaseStream.Seek(0, SeekOrigin.End);
24             sw.WriteLine(string.Format("Windows Service Start At {0} \n", DateTime.Now.ToString()));
25             sw.Flush();
26             sw.Close();
27             fs.Close();
28         }
29 
30         /// <summary>
31         /// 停止服務時執行
32         /// </summary>
33         protected override void OnStop()
34         {
35             FileStream fs = new FileStream(ConfigurationManager.AppSettings["LogFile"].ToString(), FileMode.OpenOrCreate, FileAccess.Write);
36             StreamWriter sw = new StreamWriter(fs);
37             sw.BaseStream.Seek(0, SeekOrigin.End);
38             sw.WriteLine(string.Format("Windows Service Stop At {0} \n", DateTime.Now.ToString()));
39             sw.Flush();
40             sw.Close();
41             fs.Close();
42         }
43     }
44 }
View Code

安裝Windows服務

1、以管理員身份運行命令行工具

2、進入InstallUtil.exe文件夾
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 或 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

3、安裝服務,如果路徑帶空格,用雙引號包起來
InstallUtil.exe "F:\maiaimei\WindowsService\Demo\MyWindowsService.exe"

卸載Windows服務

1、以管理員身份運行命令行工具

2、進入InstallUtil.exe文件夾
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 或 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

3、卸載服務,如果路徑帶空格,用雙引號包起來
InstallUtil.exe /u "F:\maiaimei\WindowsService\Demo\MyWindowsService.exe"

這里強調的是以管理員身份運行命令行工具,否則有可能報錯

正在安裝程序集“F:\maiaimei\WindowsService\Demo\MyWindowsService.exe”。
受影響的參數是:
   logtoconsole = 
   logfile = F:\maiaimei\WindowsService\Demo\MyWindowsService.InstallLog
   assemblypath = F:\maiaimei\WindowsService\Demo\MyWindowsService.exe
正在安裝服務 MyWindowsService...
正在日志 Application 中創建 EventLog 源 MyWindowsService...
正在回滾程序集“F:\maiaimei\WindowsService\Demo\MyWindowsService.exe”。
受影響的參數是:
   logtoconsole = 
   logfile = F:\maiaimei\WindowsService\Demo\MyWindowsService.InstallLog
   assemblypath = F:\maiaimei\WindowsService\Demo\MyWindowsService.exe
正在將事件日志還原到源 MyWindowsService 的前一狀態。
在 System.Diagnostics.EventLogInstaller 安裝程序的“回滾”階段發生異常。
System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。  不可訪問的日志: Security。
在安裝的“回滾”階段發生異常。將忽略該異常並繼續回滾。但是,在完成回滾后計算機可能無法完全還原到它的初始狀態。

源碼地址:https://github.com/maiaimei/WindowsService


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM