Document

windows服务搭建(VS2019创建Windows服务不显示安装组件)

网址:

https://www.bbsmax.com/A/D854ERrQdE/

1.创建windows服务应用

2.右键查看代码

3.写个计时器Timer  using System.Timers;

如上图,按tab键快速操作  会自动创建一个委托

改为下边的方式,打印日志来记录服务运行

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.IO;
  7. using System.Linq;
  8. using System.ServiceProcess;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Timers;
  12.  
  13. namespace MyFirstWindowsService
  14. {
  15. public partial class Service1 : ServiceBase
  16. {
  17. public Service1()
  18. {
  19. InitializeComponent();
  20. }
  21.  
  22. protected override void OnStart(string[] args)
  23. {
  24. WriteRunLog("服务开始了!!!");
  25. Timer timer = new Timer();
  26. timer.Interval = ;
  27. timer.Elapsed += Timer_Elapsed;
  28. timer.Start();
  29. }
  30.  
  31. private void Timer_Elapsed(object sender, ElapsedEventArgs e)
  32. {
  33. WriteRunLog("当前时间:" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss"));
  34. }
  35.  
  36. protected override void OnStop()
  37. {
  38. WriteRunLog("服务结束了!!!");
  39. }
  40.  
  41. /// <summary>
  42. /// 记录运行日志
  43. /// </summary>
  44. /// <param name="writeMsg"></param>
  45. public void WriteRunLog(string writeMsg)
  46. {
  47. FIle_Common file = new FIle_Common();
  48. file.CreateDire(@"F:\ServiceLog\");
  49.  
  50. using (FileStream fs = new FileStream(@"F:\ServiceLog\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.Write))
  51. {
  52. StreamWriter m_streamWriter = new StreamWriter(fs);
  53.  
  54. m_streamWriter.BaseStream.Seek(, SeekOrigin.End);
  55.  
  56. m_streamWriter.WriteLine("mcWindowsService:" + writeMsg + " Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n");
  57.  
  58. m_streamWriter.Flush();
  59.  
  60. m_streamWriter.Close();
  61.  
  62. fs.Close();
  63. }
  64. }
  65. }
  66. }
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.IO;
  6.  
  7. namespace MyFirstWindowsService
  8. {
  9. public class FIle_Common
  10. {
  11. /// <summary>
  12. /// 创建文件夹
  13. /// </summary>
  14. /// <param name="sender"></param>
  15. /// <param name="e"></param>
  16. public void CreateDire(string path)
  17. {
  18. if (!Directory.Exists(path))
  19. {
  20. Directory.CreateDirectory(path);
  21. }
  22. }
  23. /// <summary>
  24. /// 删除文件夹
  25. /// </summary>
  26. /// <param name="sender"></param>
  27. /// <param name="e"></param>
  28. public void DeleteDire(string path)
  29. {
  30. if (Directory.Exists(path))
  31. {
  32. Directory.Delete(path);
  33. }
  34. }
  35.  
  36. /// <summary>
  37. /// 删除文件
  38. /// </summary>
  39. /// <param name="sender"></param>
  40. /// <param name="e"></param>
  41. public void DeleteDireOne(string path)
  42. {
  43. if (File.Exists(path))
  44. {
  45. File.Delete(path);
  46. }
  47. }
  48. }
  49. }

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

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

stop.bat

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

运行statr.bat

右键 我的电脑  管理

若要卸载该服务,运行stop.bat

posted @ 2021-05-10 13:46  从未被超越  阅读(599)  评论(0编辑  收藏  举报