C# 编写windows服务及服务的安装、启动、删除、定时执行任务
一、编写windows服务
1、VS2017 - 创建服务Myservice
2、创建好项目之后 --- >> 双击 Service1.cs ---- >> 出现一个设计界面 ---->> 右键界面 --- >> 弹出对话框选择 ”添加安装程序“
3、在设计界面修改 serviceProcessInstaller1的属性 Account 为 LocalSystem (也可用代码修改)
4、在设计界面修改 serviceInstaller1 的属性: display 为 myfirstservice ; description 为 我的首个服务 ; StartType 为 Automatic
5、修改Service1.cs 代码如下:
- 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 Service1 : ServiceBase
- {
- public Service1()
- {
- InitializeComponent();
- }
- protected override void OnStart(string[] args)
- {
- // TODO: 在此处添加代码以启动服务。
- System.IO.File.AppendAllText(@"D:\Log.txt", " Service Start :" + DateTime.Now.ToString());
- }
- protected override void OnStop()
- {
- // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
- System.IO.File.AppendAllText(@"D:\Log.txt", " Service Stop :" + DateTime.Now.ToString());
- }
- }
- }
6、生成解决方案,可以在项目的dubug目录中找到 myservice.exe
二、SC命令=====安装、开启、配置、关闭windows服务
1、将myservice.exe放在英文目录下,我的是 d:\myservice.exe
2、在cmd中,转到D:并执行以下使命令进行服务安装和启动(这里的myserv 是自定义的名字)
- sc create myserv binPath= "d:/myservice.exe"
- sc config myserv start= auto //(自动) (DEMAND----手动、DISABLED----禁用) 并且start连着= ,而=的后面有一个空格
- net start myserv
可以看到d盘下已生成了log.txt
3.删除服务,执行以下代码
- sc delete myserv
4、为方便使用,可编辑为bat批处理文件
- @echo.服务启动......
- @echo off
- @sc create myserv1 binPath= "d:\demo.exe"
- @net start myserv1
- @sc config myserv1 start= AUTO
- @echo off
- @echo.启动完毕!
- @pause
5.或在程序中用以下代码安装(参考http://www.cnblogs.com/pingming/p/5115320.html)
- //安装服务
- string path = @"D:\demo.exe";
- Process.Start("sc", "create myDemo binPath= \"" + path + "\" ");
- Console.WriteLine("安装成功");
- //卸载服务
- Process.Start("sc", "delete KJLMDemo");
- Console.WriteLine("卸载成功");
- break;
6、定时执行任务:参考 https://www.cnblogs.com/Beau/p/3491063.html
- //开始事件
- protected override void OnStart(string[] args)
- {
- //定时事件
- MyTimer();
- }
- //结束事件
- protected override void OnStop()
- {
- writeLog("服务结束时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- }
- //实例化System.Timers.Timer
- private void MyTimer()
- {
- System.Timers.Timer MT = new System.Timers.Timer();
- MT.Elapsed += new System.Timers.ElapsedEventHandler(MTimedEvent);
- MT.Enabled = true;
- }
- //构造System.Timers.Timer实例 间隔时间事件
- private void MTimedEvent(object source, System.Timers.ElapsedEventArgs e)
- {
- //实现方法
- }
关于定时器,System.Windows.Forms.Timer与System.Timers.Timer的区别,参考这里:http://www.cnblogs.com/lonelyxmas/archive/2009/10/27/1590604.html
C# 编写windows服务及服务的安装、启动、删除、定时执行任务的更多相关文章
- c#创建windows服务(创建,安装,删除)
一.在vs中创建一个window服务 二.进入Service1.cs页面后 右击----创建安装程序,安装程序创建成功后---会出现ProjectInstaller.cs文件 三.进入ProjectI ...
- Windows下Apache的下载安装启动停止
一:下载 打开任意浏览器,输入网址:http://httpd.apache.org/ 进入如下界面: 我们选择最新版Apache httpd 2.4.12Released,点击Download,进入如 ...
- 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法
旧版提示:"CLodop云打印服务(localhost本地)未安装启动!"新版提示:"Web打印服务CLodop未安装启动,点击这里下载执行安装(若此前已安装过,可点这里 ...
- 手把手教用C#编写Windows服务 并控制服务 安装、启动、停止、卸载
Windows服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动, ...
- 编写Windows服务疑问2:探索服务与安装器的关系
首先,来弄两个服务,一个叫“飞机”,一个叫“火车”. public class FeiJiService : ServiceBase { public FeiJiService() { Service ...
- C#编写windows服务
项目要求: 数据库用有一张表,存放待下载文件的地址,服务需要轮训表将未下载的文件下载下来. 表结构如下: 过程: VS--文件-->新建项目-->windows-->windows服 ...
- C#编写Windows 服务
C#编写Windows 服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时 ...
- Windows服务的创建、安装、卸载
1.新建Window服务项目 2.添加安装配置文件 3.serviceProcessInstaller1右键属性,设置Account属性为LocalSystem. serviceInstaller1右 ...
- python实现编写windows服务
使用python编写windows服务 最近测试服务器上经常发生磁盘空间不足,每次手动清除比较麻烦,所以写个windows服务定时清理下.中间也遇到过几个坑,一起记录下来. 1.python实现win ...
随机推荐
- 5. CopyOnWriteArrayList 的适用场景
package com.gf.demo04; import java.util.ArrayList; import java.util.Collections; import java.util.It ...
- js中字符串和数组的使用
函数: 函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 但有时候我们不希望他被销毁. 函数归属谁跟它在哪调 ...
- Netty 系列七(那些开箱即用的 ChannelHandler).
一.前言 Netty 为许多通用协议提供了编解码器和处理器,几乎可以开箱即用, 这减少了你在那些相当繁琐的事务上本来会花费的时间与精力.另外,这篇文章中,就不涉及 Netty 对 WebSocket协 ...
- 有状态(Stateful)与无状态(Stateless)
1.有状态(Stateful): 有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,类里面有成员变量,而且成员变量是可变的,是非线程安全的.在不同方法调用间 ...
- HDU 4764 Stone(巴什博奕)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- Xamarin.Forms 使用本地数据库之 SQLite
前言 Xamarin.Forms支持使用SQLite数据库引擎.本文介绍了Xamarin.Forms应用程序如何读取和写入数据到使用SQLite.Net的本地SQLite数据库. 在Xamarin.F ...
- 测试系统工程师TSE的职责与培养
测试系统工程师TSE的职责与培养 研发资深顾问 杨学明 如今,国内所有的研发型的公司都有测试部门,无论测试团队大小,都有测试组长,测试经理,测试工程师等头衔,但随着产品和业务的质量要求越来越高,产品的 ...
- JAVA设计模式——代理(静态代理)
定义 为其它的对象提供一种代理,以控制这个对象的访问 使用场景 当不想直接访问某个对象的时候,就可以通过代理 1.不想买午餐,同事帮忙带 2.买车不用去厂里,去4s店 3.去代理点买火车票,不用去车站 ...
- SparkSQL【1.x版本】字段敏感不敏感问题
一.特征 1.SqlContext默认大小写不敏感,如果DataFrame中有字段相同,大小写不同,在使用字段的时候不会引起歧义. 2.HiveContext提供更多的Hive预置函数,可以更高效的进 ...
- Spring MVC 请求映射 (二)
完整的项目案例: springmvc.zip 目录 实例 项目结构: 一.配置web.xml <?xml version="1.0" encoding="UTF-8 ...