用 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 ...
随机推荐
- linux 下 php 安装 libevent
一.安装libevent库 1.到libevent官网下载安装源码 http://libevent.org/ 如:libevent-2.0.22-stable.tar.gz 2.解压源码包 > ...
- VC2008 类型重定义的问题
Q: 比如"a.h"里定义了类a,类a所有函数的实现都放在"a.cpp"里.然后"b.h"和"c.h"都需要用到类a,所 ...
- 06 爬虫框架:scrapy
爬虫框架:scrapy 一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前S ...
- tp5链接访问
方法名:admin/DayActive/statistic 访问:admin/day_active/statistic
- [BAT]远程执行或停止计划任务
执行 schtasks /run /tn "IPADForAdvisor_QA_APITest" /s SZPCWIN2K801 /u msdomain1\jzhang6 /p j ...
- 开始Java之旅
从今天起,cgg将给大家讲讲Java这种神奇的东西. 至于配置环境变量,大家可以看看我的博客:环境变量上面有详细解释. 下面先给大家一个公式: public class [文件名]{ ...
- scanf和fscanf读取文件
这篇是针对推箱子游戏而写的,某个时候在学C语言,最近转到windows设计,不知道是否有同样的感受,后面的东西学了,前面的就有点生疏了.其实,我的理解是,注意力转移了,当集中于当前问题的时候就会忽略以 ...
- eclipse如何恢复误删文件
刚刚真的要吓死宝宝了,不是说宝宝心里素质差,是因为刚刚误删的文件实在是太重要了,废话不多说了,正题 如何恢复eclipse误删的文件 1,当时被误删了,可立即 Ctrl+z 即可恢复误删文件; 2,时 ...
- HDU1459 非常可乐(BFS) 2016-07-24 15:00 165人阅读 评论(0) 收藏
非常可乐 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶 ...
- C++中的数组问题
C++中的数组问题 1. 数组赋值与初始化 (1)直接初始化: ]={,,}: (2)遍历访问初始化: ;i< ;i++) //直接读入,或者用别的数组,以及别的(i+1)等. (3)内存操作函 ...