Windows服务程序图文教程
1、新建服务项目
在Visual C# 下的选择WindowsService,输入项目名称,点击【OK】
将类名修改为WriteLog.cs
![](https://img-my.csdn.net/uploads/201304/11/1365685320_4945.jpg)
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中间将出现服务的设计区域
![](https://img-my.csdn.net/uploads/201304/11/1365685358_1042.jpg)
右键选择“AddInstaller”
![](https://img-my.csdn.net/uploads/201304/11/1365685537_8972.jpg)
出现serviceProcessInstaller1和serviceInstaller1(如果项目中有两个服务的话,就会出现两个serviceInstaller)
![](https://img-my.csdn.net/uploads/201304/11/1365685570_4807.jpg)
下图是解决方案浏览器的结构:
![](https://img-my.csdn.net/uploads/201304/11/1365685596_9103.jpg)
然后在serviceProcessInstaller1的属性页中指定服务的权限
这里选择LocalSystem,本地系统,这是服务的最高权限
在serviceInstaller1的属性页中填入服务的DisplayName(显示名称,即显示在Windows服务管理器中的名称),Description(服务的描述),ServiceName(服务的内部名称),同时指定服务的启动方式,分为Automatic(自动)、Manual(手动)、Disabled(禁用)。
![](https://img-my.csdn.net/uploads/201304/11/1365685647_8084.jpg)
这里选择Automatic,即开机启动
4、编译
右键点击MyService项目,选择Build即可编译
![](https://img-my.csdn.net/uploads/201304/11/1365685690_8769.jpg)
编译完成后,在项目的Debug文件夹里,即可看到服务的exe可执行程序
![](https://img-my.csdn.net/uploads/201304/11/1365685721_5022.jpg)
习惯性双击MyService.exe,会出现一个“Windows Service Start Failure”的提示
![](https://img-my.csdn.net/uploads/201304/11/1365685745_5592.jpg)
原来服务程序必须先用installutil.exe进行安装,然后在服务管理器中启动才能使用。
5、安装服务程序
进入CMD控制台,在.NET路径下找到installutil.exe
![](https://img-my.csdn.net/uploads/201304/11/1365685769_4738.jpg)
将服务程序的路径作为installutil.exe的输入参数传入(可以直接将文件拖进命令行即可出现绝对路径)并回车
![](https://img-my.csdn.net/uploads/201304/11/1365685797_1489.jpg)
服务安装成功。
右键点击“我的电脑”——>“管理”,在出现的“计算机管理”对话框中选择“服务和应用程序”——>“服务”
![](https://img-my.csdn.net/uploads/201304/11/1365685825_3826.jpg)
窗口右边即可以找到我们刚才已经安装的服务
可以看到现在服务的状态为空白,说明服务还未启动。右键点击安装的服务,选择“启动”,即可启动服务
启动后我们在D盘下找到了一个log.txt文件
![](https://img-my.csdn.net/uploads/201304/11/1365685848_4328.jpg)
手动停止服务,则在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服务不在了。
![](https://img-my.csdn.net/uploads/201304/11/1365685909_8541.jpg)
同样也可以编写一个批处理文件卸载服务
在MyService.exe所在路径下新建一个uninstall.txt
内容如下:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installUtil.exe/u MyService.exe
将后缀名改为.bat
双击即可执行服务的卸载
上面我们用命令行的形式来安装服务程序,这个过程显得较为繁琐,不利于使用者的操作。其实windows服务项目还可以做成安装程序的形式来安装,这样就比较方便了。下一篇我们就来介绍为windows服务项目添加安装程序。