windows services 是运行在后台的服务程序,可以用 vs2013 来创建,创建的步骤如下:
1.打开 vs2013 , Files -->New Project --> windows-->windows service 在本示例中的名称为: WindowsServiceDemon 如下图所示
2.创建好的项目的解决方案如下:
Program.cs 是程序的入口处,里面包含程序的入口方法,Servicel.cs 是服务类文件,里面包含服务的内容,所有的逻辑都在这里,Services.cs 包含两部分:一部分是Designer 可视化设计界面,可以在这里添加各种组件,另一部分是代码文件,里面主要写逻辑,默认包含3个方法:OnStart、OnStop 和构造函数,还可以添加 OnPause 和 OnContinue 方法,在构造函数里,设置服务的名称:
base.ServiceName="wisdomhu";
Services1.cs 完整的代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Linq; 7 using System.ServiceProcess; 8 using System.Text; 9 using System.Threading.Tasks; 10 11 namespace WindowsServiceDemon 12 { 13 public partial class Service1 : ServiceBase 14 { 15 public Service1() 16 { 17 InitializeComponent(); // 构造函数 18 base.ServiceName = "wisdomhu";//设置服务名称,与后面的安装服务名称要一致 19 20 } 21 22 protected override void OnStart(string[] args) 23 { 24 //TODO 服务启动时的相关逻辑 25 } 26 27 protected override void OnStop() 28 { 29 //TODO 服务停止时的相关逻辑 30 } 31 } 32 }
3.双击 Services1.cs文件,进入设计页面,在空白处单击鼠标右键--> Add Installer (添加安装器)
添加完后,页面上会显示两个标签,
单击选中 serviceProcessInstaller1,鼠标右键 -->Properties (显示属性) 在右侧的属性栏中,修改属性值,将Account 属性设置成 localSystem,这是服务的类型
4. 按照上面的步骤,设置 serviceInstaller1 的属性,其中 DelayedAutoStart 表示是否延迟启动,Descirption 表示:服务的说明文字 ,DisplayName 表示: 服务的显示名称,ServicesDependOn 表示:服务所依赖的其它服务项,StartType 表示: 服务的启动类型: 自动、手动、禁止, Partent表示:服务所依赖的父服务 , ServicesName 表示: 服务的名称,服务的名称要与在第二步代码中设置的服务的名称一致。
5.对项目进行编译,并持备 bin-->debug 下的所有文件 到 自己指定的文件夹中,这里的文件夹名称是: WindowsServicesDemon
6. 在 WindowsServicesDemon 文件夹中,分别添加两个文件: Installer.bat 和 UnInstaller.bat (可通过文本编辑器来添加)它们分别表示:服务的安装和服务的卸载,其中的内容分别是:
%~dp0InstallUtil.exe %~dp0WindowsServiceDemon.exe
pause
%~dp0InstallUtil /u %~dp0WindowsServiceDemon.exe
pause
注: 开头一定要留 %~dp0 符号,表示将目录更改为当前目录,如果不加,可能会出错。
7. 从 C:\Windows\Microsoft.NET\Framework\v4.0.30319 找到 InstallUtil.exe 和 InstallUtil 文件,并把这两个文件拷备到 第 5步所创建的文件夹中,这里是 WindowsServicesDemon ,然后 选 中 Installer.bat 文件,以管理员的方式运行,如果一切正常,将会看到这样的结果:
服务已经成功安装,打开 服务,将会看到,刚才安装的 wisdomhu 服务
若要卸载服务时,只要以管理员的方式运行 UnInstaller.bat 就可以了。