windows服務搭建(VS2019創建Windows服務不顯示安裝組件)


 

1.創建windows服務應用

2.右鍵查看代碼

3.寫個計時器Timer  using System.Timers;  

如上圖,按tab鍵快速操作  會自動創建一個委托

 改為下邊的方式,打印日志來記錄服務運行

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;

namespace MyFirstWindowsService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            WriteRunLog("服務開始了!!!");
            Timer timer = new Timer();
            timer.Interval = 1000;
            timer.Elapsed += Timer_Elapsed;
            timer.Start();
        }

        private void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            WriteRunLog("當前時間:" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss"));
        }

        protected override void OnStop()
        {
            WriteRunLog("服務結束了!!!");
        }

        /// <summary>
        /// 記錄運行日志
        /// </summary>
        /// <param name="writeMsg"></param>
        public void WriteRunLog(string writeMsg)
        {
            FIle_Common file = new FIle_Common();
            file.CreateDire(@"F:\ServiceLog\");


            using (FileStream fs = new FileStream(@"F:\ServiceLog\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                StreamWriter m_streamWriter = new StreamWriter(fs);

                m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);

                m_streamWriter.WriteLine("mcWindowsService:" + writeMsg + "  Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n");

                m_streamWriter.Flush();

                m_streamWriter.Close();

                fs.Close();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;

namespace MyFirstWindowsService
{
    public class FIle_Common
    {
        /// <summary>
        /// 創建文件夾
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void CreateDire(string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
        }
        /// <summary>
        /// 刪除文件夾
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void DeleteDire(string path)
        {
            if (Directory.Exists(path))
            {
                Directory.Delete(path);
            }
        }




        /// <summary>
        /// 刪除文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void DeleteDireOne(string path)
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }
        }
    }
}

 

 4.右鍵添加安裝程序

 5.我用的VS2019  .net4.8  此時安裝組件已經寫好了,但是設計圖里不顯示,下邊附上解決方案

6.解決方法:在這個類上邊 using System.ServiceProcess;

此時 兩個安裝組件都顯示出來了

 

 

7.設置服務安裝屬性 

Description:對服務的說明

DisplayName:向用戶標識服務的友好名稱

ServiceName:表示在系統服務中的名稱

StartType:啟動服務的方式和時間,如果為Manual則手動啟動,默認停止,如果為Automatic為自動啟動

 

 

 

Accout:賬戶類型,LocalSystem本地系統服務

此時,Windows Service就編寫完了

8.安裝Windows Service

生成解決方案 進入\bin\Debug 下 添加兩個批處理文件來安裝 卸載服務

 

statr.bat    MyFirstWindowsService.exe是\Debug下生成的.exe文件   MyFirstWindowsService是上邊設置的ServiceName

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0MyFirstWindowsService.exe
Net Start MyFirstWindowsService
sc config MyFirstWindowsService start= auto
pause

stop.bat

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0MyFirstWindowsService.exe
pause

 

運行statr.bat

 右鍵 我的電腦  管理

 

 

 若要卸載該服務,運行stop.bat

 

 

 


免責聲明!

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



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