Windows服务开发入门实践

Windows服务开发知识学习实践步骤

(1)在Visual Studio 创建项目时,选择创建Windows服务项目模板

(2)项目创建成功后的界面如下图。项目会自动生成一个Service1.cs文件,我们可以对他重命名FirstService.cs

 点击添加安装程序后,右侧解决方案出现了ProjectInstaller.cs,双击该文件,可看到它由两个文件构成:

 (3)点击serviceInstaller1文件,在右下角属性框修改如下几个属性信息:

  • ServiceName:服务名称
  • Description:描述
  • Display Name:显示名称
  • StartType:启动类型,可以设置为手动或自动

 点击serviceProcessInstaller1文件,在右下角属性框修改Account信息:指示用来运行此服务的账户类型,可以设置为LocalSystem

 (4)这样,以上创建widows服务前置操作已基本完成。查看FirstService.cs源码,可以看到OnStart()和OnStop()方法需要我们重写:

 (5)重写OnStart()和OnStop()方法

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;

namespace WindowsServiceStudy
{
    public partial class FirstService : ServiceBase
    {
        public FirstService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            WriteInfo("记录服务启动");
        }

        protected override void OnStop()
        {
            WriteInfo("记录服务关闭");
        }

        private string filePath = @"D:\个人文档资料\1-实际实践记录\1-windowsservice\ServiceLog.txt";

        private void WriteInfo(string info)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine($"{DateTime.Now},{info}");
                }
            }
        }
    }
}

(6)保存---清理---重新生成。

此时在项目bin文件夹下会生成刚刚的.exe文件

 双击该文件,提示报错:

 (7)通过InstallUtil.exe执行自开发的Windows服务的.exe文件安装

在如下地址找到InstallUtil.exe文件:

 以管理员权限打开cmd,在命令框内使用命令: InstallUtil 后跟自开发服务的.exe文件的绝对地址   

如命令:installutil D:\个人文档资料\1-实际实践记录\1-windowsservice\WindowsServiceStudy\bin\Debug\WindowsServiceStudy.exe

若是卸载: installutil D:\个人文档资料\1-实际实践记录\1-windowsservice\WindowsServiceStudy\bin\Debug\WindowsServiceStudy.exe -u

执行过程、结果如下图:

 打开服务界面,可以看到服务已安装上:

 另外,要特别注意VS开发时属性的配置与实际服务显示各项的对应关系:

 

通过服务界面,启动或关闭服务后,记录的日志结果为:

 

posted @ 2023-07-13 14:21  上清风  阅读(51)  评论(0编辑  收藏  举报