用 vs 2017创建 windows 服务
转载自:http://www.cnblogs.com/xujie/p/5695673.html
1、新建windows服务项目,我这里选择的是Framework4.0,没有选择高版本是为了防止在服务在一些低版本系统上无法正常运行。

2、添加Windows服务的安装程序。

在默认Service1设计器界面空白处点击右键->添加安装程序,系统会自动新建一个带有默认配置的安装程序类,如下图:

新建完安装程序后,需要给默认的serviceInstaller1和serviceProcessInstaller1做一些基本的属性设置。如下图:


以上工作完成,安装程序配置完毕。
注意:如果不给服务添加安装程序,后面是没法把服务安装至windows系统里的。
3、添加应用程序配置文件(如果有需要的话)。

如果项目有需要,一些应用程序的配置参数可以设置在此文件里(例如:数据库连接字符串)。
4、编写windows服务主代码
- 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 WinServiceTest
- {
- public partial class Service1 : ServiceBase
- {
- public Service1()
- {
- InitializeComponent();
- System.Timers.Timer timer = new System.Timers.Timer();
- timer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);
- timer.Interval = 5000;//每5秒执行一次
- timer.Enabled = true;
- }
- public int count = 0;
- //定时执行事件
- private void TimedEvent(object sender, System.Timers.ElapsedEventArgs e)
- {
- //业务逻辑代码
- EmailClass mail = new EmailClass();
- mail.Email(count++);
- }
- protected override void OnStart(string[] args)
- {
- this.WriteLog("\n当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + "\n");
- this.WriteLog("客户端数据同步服务:【服务启动】");
- }
- protected override void OnStop()
- {
- this.WriteLog("\n当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss")+ "\n");
- this.WriteLog("客户端数据同步服务:【服务停止】");
- }
- protected override void OnShutdown()
- {
- this.WriteLog("\n当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + "\n");
- this.WriteLog("客户端数据同步服务:【计算机关闭】");
- }
- #region 记录日志
- /// <summary>
- /// 记录日志
- /// </summary>
- /// <param name="msg"></param>
- private void WriteLog(string msg)
- {
- //string path = @"C:\log.txt";
- //该日志文件会存在windows服务程序目录下
- string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";
- FileInfo file = new FileInfo(path);
- if (!file.Exists)
- {
- FileStream fs;
- fs = File.Create(path);
- fs.Close();
- }
- using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
- {
- using (StreamWriter sw = new StreamWriter(fs))
- {
- sw.WriteLine(DateTime.Now.ToString() + " " + msg);
- }
- }
- }
- #endregion
- }
- }
4、安装与卸载服务
- 请将【WinServiceTest】拷贝到D盘或C盘根目录;
- 安装服务【管理员身份】运行【SC安装-发送邮件】即可;
- 卸载服务【管理员身份】运行【SC卸载】即可;
SC安装-发送邮件:
- @echo.请稍等,服务启动......
- @echo off
- @sc create GX_To_EMAIL binPath= "D:\WinServiceTest\WinServiceTest\bin\Debug\WinServiceTest.exe"
- DisplayName=每隔一段时间发送邮件的服务 start= auto
- @sc description GX_To_EMAIL 定时发送邮件
- @sc start GX_To_EMAIL
- @echo off
- @echo.启动完毕!
- @pause
SC卸载:
- @echo.服务卸载......
- @echo off
- @sc stop GX_To_EMAIL
- @sc delete GX_To_EMAIL
- @sc stop GX_To_EMAIL
- @echo off
- @echo.卸载完毕!
- @pause
用 vs 2017创建 windows 服务的更多相关文章
- 用C#创建Windows服务(Windows Services)
用C#创建Windows服务(Windows Services) 学习: 第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...
- 玩转Windows服务系列——创建Windows服务
创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Windows服务项目. 生成的解决方案包含两个项目:Servi ...
- .Net创建windows服务入门
本文主要记录学习.net 如何创建windows服务. 1.创建一个Windows服务程序 2.新建安装程序 3.修改service文件 代码如下 protected override void On ...
- C# 创建Windows服务
创建windows服务项目 2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart用于执行服务事件,一般采用线程方式执行方法,便于隔一段事件执行一回 END ...
- 使用Topshelf创建Windows服务
概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...
- [转]C#创建Windows服务与安装
本文档用于创建windows服务说明,使用vs2010系统平台 创建项目 1 创建windows服务项目 2 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码 3 代码中OnStart ...
- [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务
除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...
- 在64位windows下使用instsrv.exe和srvany.exe创建windows服务
在64位windows下使用instsrv.exe和srvany.exe创建windows服务 在32位的windows下,包括windows7,windows xp以及windows 2003, ...
- 使用Topshelf 5步创建Windows 服务 z
使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with T ...
随机推荐
- Fragment 生命周期 全局变量的声明位置
public class Fragment_shouye extends Fragment { private List<Zixun_shouye> datas; private TopV ...
- centos6.6 下 安装 php7 按 nginx方式
1.安装必要的依赖库 > yum -y install gd zlib libjpeg libjpeg-devel libpng libpng-devel freetype freetype-d ...
- HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署
HHVM起源于Facebook公司,是一个开源的PHP虚拟机,使用JIT的编译方式以及其他技术,让PHP代码的执行性能大幅提升.HHVM提升PHP性能的途径,采用的方式就是替代Zend引擎来生成和执行 ...
- wcf服务契约的重载
a. 服务端 .服务端 契约用OperationContract的Name实现重载 using System; using System.Collections.Generic; using Syst ...
- 学习GIT 版本控制的好去处 另GDB资料
廖雪峰的官方网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 作者不仅仅是做技 ...
- install pip(mac)
simple method: sudo easy_install pip you have done!and can install the other py programs using pip ...
- hadoop群集 启动
###注意:严格按照下面的步骤 .5启动zookeeper集群(分别在itcast04.itcast05.itcast06上启动zk) cd /itcast/zookeeper-/bin/ ./zkS ...
- 关于使用smsx.cab控件做web打印使用方法(转)
注意:在使用之前先告诉下我的痛苦经历 在做WEB项目是我的JSP页面在jsp文件夹里,我把smsx.cab放在js文件夹里(jsp和js是用级别目录) 在本机上测试可以正确下载控件,但是部署到测试服务 ...
- 情境领导II
情境领导理论认为,领导者的行为要与被领导者的准备程度相适应,才能取得有效的领导效果,也就是说领导风格不是一成不变的,而要根据环境及员工的变化而改变. 三大技巧分别为诊断.弹性与约定领导型态.诊断是评估 ...
- 2018.09.26 洛谷P2464 [SDOI2008]郁闷的小J(map+vector)
传送门 本来出题人出出来想考数据结构的. 但是我们拥有map+vector/set这样优秀的STL,因此直接用map离散化,vector存下标在里面二分找答案就行了. 代码: #include< ...