VS2015 开发Windows服务(Windows service)包括添加服务安装与卸载文件

1、创建一个Windows服务程序

(和创建的是控制台程序、WinForm一样),如下所示:

 创建完成后界面如下:

 在界面空白处右键 -查看代码,如下所示:

 

 下面,实现一个写txt文件操作,每隔一秒钟,往指定的txt文件写入系统时间信息,这里有以下引用

using System.IO;

using System.Threading;

实现代码如下:

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;

namespace FristService
{
    public partial class Service1 : ServiceBase
    {
        private System.Timers.Timer timer1; //定时器监控线程运行状态
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            timer1 = new System.Timers.Timer();
            timer1.Interval = 10 * 1000; //设置计时器时间间隔
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(TimerEvent); //定时器事件
            timer1.Enabled = true; //启动定时器
        }

        protected override void OnStop()
        {
            FileStream fs = new FileStream(@"d:\test\log.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs);
            sw.BaseStream.Seek(0, SeekOrigin.End);
            sw.WriteLine("WindowsService: Service Stopped" + DateTime.Now.ToString() + "\n");
            sw.Flush();
            sw.Close();
            fs.Close();
        }

        private void TimerEvent(object sender, System.Timers.ElapsedEventArgs e)
        {
            Thread thread = new Thread(new ParameterizedThreadStart(ThreadFunction));
            thread.Name = "EMSThread" + "_" + (22).ToString() + "_SaveData";
            thread.Start((object)22);
        }
        ///
        //服务启动线程后执行的函数/
        ///
        private void ThreadFunction(object enterpriseId_obj)
        {
            FileStream fs = new FileStream(@"d:\test\log.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs);
            sw.BaseStream.Seek(0, SeekOrigin.End);
            sw.WriteLine("WindowsService: Service Started" + DateTime.Now.ToString() + "\n");

            sw.Flush();
            sw.Close();
            fs.Close();
        }
    }
}

2、添加安装程序

切换到视图设计器,右键添加安装程序,如下所示:

 添加完成后如下所示,项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件

serviceProcessInstaller1

serviceInstaller1

3、设置服务安装属性

设置组件serviceInstaller1的主要属性,ServiceName: 服务系统标识,在cmd命令中执行sr start/stop/query等等命令时候使用,用来唯一标识一个Window服务,这个千万要注意,设置ServiceName的值, 该值表示在系统服务中的名称设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动设置Description,添加服务描述。

 设置组件serviceProcessInstaller1的主要属性,Accout:账户类型,LocalSystem本地系统服务;

然后重新生成项目,生成成功!到此,我们只是完成了服务的编写,接下来是写服务的安装、卸载文件了。

4、编写安装文件

点击项目右键-打开资源文件。从 C:\Windows\Microsoft.NET\Framework\v4.0.30319 找到 InstallUtil.exe 和 InstallUtil 文件,并把这两个文件拷备到项目dubug文件夹下,如下所示:

 

 分别添加两个文件: Installer.bat 和 UnInstaller.bat (可通过文本编辑器来.txt文件,再把.txt 后缀修改为 .bat 即可,如果你电脑不显示文件后缀,自行百度显示文件后缀方法,这里我把 Installer.bat 和 UnInstaller.bat 取名为 安装服务.bat 和 卸载服务.bat)它们分别表示:服务的安装和服务的卸载,其中的内容分别是:

安装:

%~dp0InstallUtil.exe %~dp0FristService.exe
pause

卸载:

%~dp0InstallUtil /u %~dp0FristService.exe
pause

注: 开头要留 %~dp0  符号,表示将目录更改为当前目录,如果不加,可能会出错。

完成以上工作即可完成服务程序编写了,如下所示:

5、安装服务

点击安装服务,以管理员身份运行,安装成功如下所示:

此时,在电脑开始面板搜索 服务 ,打开电脑服务,如下所示:

 右键服务,开启该服务,稍等几秒钟之后在 d:\test\log.txt 文件下就可以看到如下内容:

6、卸载服务

点击卸载服务,效果如下:

 再打开服务,我们将看不到之前安装的服务了。到此为止,一个简单的服务程序就完成了,希望给大家带来帮助,喜欢的话关注点赞,谢谢。

源代码下载地址:猛戳这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌霜残雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值