C#编写Windows 服务

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

使用Microsoft Visual Studio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务。

新建一个Windows Services工程:

工程创建好之后,默认会有一个Services1.cs文件,删掉此文件,重新添加一个新Item

右击新添加的这个文件,选择View code,可以看到,有两个函数 OnStart和OnStop,OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。

这两个函数的代码如下:

 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 using System.IO;
11
12 namespace MyFirstWindowsService
13 {
14 partial class MyWindowsService : ServiceBase
15 {
16 public MyWindowsService()
17 {
18 InitializeComponent();
19 }
20
21 protected override void OnStart(string[] args)
22 {
23 // TODO: Add code here to start your service.
24 FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
25
26 StreamWriter streamWriter = new StreamWriter(fileStream);
27
28 streamWriter.BaseStream.Seek(0, SeekOrigin.End);
29
30 streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "\n");
31
32 streamWriter.Flush();
33
34 streamWriter.Close();
35
36 fileStream.Close();
37 }
38
39 protected override void OnStop()
40 {
41 // TODO: Add code here to perform any tear-down necessary to stop your service.
42 FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
43
44 StreamWriter streamWriter = new StreamWriter(fileStream);
45
46 streamWriter.BaseStream.Seek(0, SeekOrigin.End);
47
48 streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "\n");
49
50 streamWriter.Flush();
51
52 streamWriter.Close();
53
54 fileStream.Close();
55 }
56 }
57 }

之后需要新建一个安装组件MyWindowsServiceProjectInstaller(右击MyWindowsService.cs这个文件选择view desiner,然后选择Add Installer),需要将MyFirstWindowsServiceProcessInstaller的account属性设置为localservice.

编写批处理文件:

安装服务批处理:

1 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
2 Net Start ServiceTest
3 sc config ServiceTest start= auto

卸载服务批处理:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe

服务安装好之后:

服务启动之后可以在D盘看到一个txt的文件,里面记录了服务的启动时间.

 
 
分类: C#学习
标签: C#学习

C#编写Windows 服务的更多相关文章

  1. C#编写windows服务

    项目要求: 数据库用有一张表,存放待下载文件的地址,服务需要轮训表将未下载的文件下载下来. 表结构如下: 过程: VS--文件-->新建项目-->windows-->windows服 ...

  2. 使用C语言编写windows服务一般框架

    原文:使用C语言编写windows服务一般框架 编写windows服务和编写windows应用程序一样,有一些回调函数必须填写且向windows 服务管理器(service manager)进行注册, ...

  3. python实现编写windows服务

    使用python编写windows服务 最近测试服务器上经常发生磁盘空间不足,每次手动清除比较麻烦,所以写个windows服务定时清理下.中间也遇到过几个坑,一起记录下来. 1.python实现win ...

  4. C# 编写windows服务及服务的安装、启动、删除、定时执行任务

    一.编写windows服务 1.VS2017  - 创建服务Myservice 2.创建好项目之后 --- >> 双击 Service1.cs  ---- >>  出现一个设计 ...

  5. c# 编写windows 服务,并制作安装包

    对服务的认识有很多个阶段. 第一阶段:当时还在用c++,知道在一个进程里while(True){},然后里面做很多很多事情,这就叫做服务了,界面可能当时还用Console控制台程序. 第二阶段:知道了 ...

  6. 手把手教用C#编写Windows服务 并控制服务 安装、启动、停止、卸载

    Windows服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动, ...

  7. 第八篇--编写Windows服务

    编写service服务参考网址:https://blog.csdn.net/nodeathphoenix/article/details/24181509 vc获得显示器状态(捕获息屏.亮屏网址):h ...

  8. 编写Windows服务疑问1:操作过程

    Windows 服务开发平时不太受人关注,毕竟那是高大上的项目类型,平常需求也用不上,很多老掉牙的家伙也只知有WinForm,仍不知有WPF,更别说Windows 服务了,正如陶渊明所写的,“不知有汉 ...

  9. .net手动编写Windows服务

    1,打开VS,新建一个windows服务程序.项目名称自定义,我这里用的默认名称:Service1 2,打开Service1,按F7查看代码.代码里有三个方法:public Service1().pr ...

随机推荐

  1. AFNetworking3.0 POST请求

    // 请求管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer ...

  2. 在打包程序中自动安装SQL Server数据库 .

    原文:在打包程序中自动安装SQL Server数据库 . 1.创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 在“添加新项目”对话框中,选择“项目类型” ...

  3. Delta3D 2.8版本号 预习

    http://blog.csdn.net/zhuyingqingfen/article/details/38581453 看到官网今天的更新.发现即将公布的delta3d 2.8 版本号 做了非常大的 ...

  4. CII-原子

    <atom.h> #ifndef ATOM_INCLUDED #define ATOM_INCLUDED extern int Atom_length(const char *str); ...

  5. Milo的游戏开发的一些链接资料

    http://www.cnblogs.com/miloyip/default.aspx?page=1 http://www.cnblogs.com/miloyip/archive/2010/06/14 ...

  6. installshield 32位打包和64位打包的注意事项

    原文:installshield 32位打包和64位打包的注意事项 32/64位问题要把握几点:1. 明确你的产品是否需要区分32/64位2. 明确你的产品中是否有32/64位的服务注册3. 了解In ...

  7. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, ...

  8. 关于easyui的tab,layout,datagrid嵌套的问题

    我的项目使用easyui作为前台的展示框架现在页面中是一个layout布局(分上,左,中)在左边是一些菜单,点击后,在中间部分增加一个tab显示内容而增加的tab里面是显示一些列表数据,列表上面是查询 ...

  9. 在Linux使用GCC编译C语言共享库

    在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...

  10. A Free , Fast and Small Automatic Formatter for C , C++ , C# , Java Source Codes

    A Free , Fast and Small Automatic Formatterfor C , C++ , C# , Java Source Codes Indenting source cod ...