Windows服务程序图文教程

来源:互联网 发布:python正态分布随机数 编辑:程序博客网 时间:2024/04/29 00:38

Windows服务程序图文教程



1、新建服务项目


在Visual C# 下的选择WindowsService,输入项目名称,点击【OK】




将类名修改为WriteLog.cs



2、编写服务代码


右键点击WriteLog.cs,选择View Code(查看代码)



服务代码中需要重写两个方法:OnStart、OnStop,其中OnStart方法供服务启动时调用,OnStop方法供服务停止时调用。

代码如下:


using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Diagnostics;using System.Linq;using System.ServiceProcess;using System.Text;namespace MyService{    public partial class WriteLog : ServiceBase    {        public WriteLog()        {            InitializeComponent();        }        protected override void OnStart(string[] args)        {            System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\log.txt", true);            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Service WriteLog Start!");            sw.Flush();            sw.Close();        }        protected override void OnStop()        {            System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\log.txt", true);            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Service WriteLog Stop!");            sw.Flush();            sw.Close();        }    }}


程序的目的是在服务启动时向D盘下的log.txt文件(若没有这个文件则创建)中写入一条启动日志,服务停止时追加写入一条停止日志


3、为服务添加安装程序


双击“WriteLog.cs”,VS中间将出现服务的设计区域



右键选择“AddInstaller”



出现serviceProcessInstaller1和serviceInstaller1(如果项目中有两个服务的话,就会出现两个serviceInstaller)



下图是解决方案浏览器的结构:



然后在serviceProcessInstaller1的属性页中指定服务的权限



这里选择LocalSystem,本地系统,这是服务的最高权限


在serviceInstaller1的属性页中填入服务的DisplayName(显示名称,即显示在Windows服务管理器中的名称),Description(服务的描述),ServiceName(服务的内部名称),同时指定服务的启动方式,分为Automatic(自动)、Manual(手动)、Disabled(禁用)。



这里选择Automatic,即开机启动


4、编译


右键点击MyService项目,选择Build即可编译



编译完成后,在项目的Debug文件夹里,即可看到服务的exe可执行程序



习惯性双击MyService.exe,会出现一个“Windows Service Start Failure”的提示




原来服务程序必须先用installutil.exe进行安装,然后在服务管理器中启动才能使用。


5、安装服务程序


进入CMD控制台,在.NET路径下找到installutil.exe



将服务程序的路径作为installutil.exe的输入参数传入(可以直接将文件拖进命令行即可出现绝对路径)并回车



服务安装成功。

右键点击“我的电脑”——>“管理”,在出现的“计算机管理”对话框中选择“服务和应用程序”——>“服务”



窗口右边即可以找到我们刚才已经安装的服务

可以看到现在服务的状态为空白,说明服务还未启动。右键点击安装的服务,选择“启动”,即可启动服务

启动后我们在D盘下找到了一个log.txt文件



手动停止服务,则在log.txt文件中有新增了一行日志。

明白了这个过程,就可以写一个批处理文件,双击即可执行安装服务程序而不需要手动在命令行中输入。

在MyService.exe所在路径下新建一个install.txt

内容如下:


C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installUtil.exe  MyService.exe

NetStart WriteLog 


将后缀名改为.bat

双击即可执行服务的安装并启动服务

 

6、卸载服务


与安装服务类似,只是在InstallUtil.exe 后面,服务程序所在路径的前面加上参数 /u,回车即可。在服务管理中刷新下即可发现WriteLog服务不在了。



同样也可以编写一个批处理文件卸载服务

在MyService.exe所在路径下新建一个uninstall.txt

内容如下:


C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installUtil.exe/u MyService.exe


将后缀名改为.bat

双击即可执行服务的卸载

 

上面我们用命令行的形式来安装服务程序,这个过程显得较为繁琐,不利于使用者的操作。其实windows服务项目还可以做成安装程序的形式来安装,这样就比较方便了。下一篇我们就来介绍为windows服务项目添加安装程序。