使用C#创建windows 服务
创建项目选择Windows Service

创建好项目之后,在生成的Service1.cs的设计页面右键选择Add Installer,会生成一个ProjectInstaller.cs。这个文件中有两个组件:serviceProcessInstaller和serviceInstaller。

对这两个组件进行设置:
serviceProcessInstaller设置属性Account为LocalSystem,这样创建服务的时候,不需要用户名和密码。
serviceInstaller1设置属性ServiceName,Description和DisplayName。ServiceName代表服务名称,Description代表服务的描述,DisplayName代表服务的显示名称。还有另外两个属性DeplayedAutoStart配置成True,StartType配置成Automatic。
从下图服务列表可以看出名称对应DisplayName,描述对应Description,启动类型对应StartType,登录为对应Account(serviceProcessInstaller)。

服务具体代码的编写涉及到service.cs中的OnStart和OnStop两个函数:
protected override void OnStart(string[] args)
{
} protected override void OnStop()
{
}
在服务函数完成、编译成功之后,在生成的exe文件夹下放入两个批处理文件:
安装服务:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe ServiceExample.exe
Pause
卸载服务:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u X5_Statistic.exe
Pause
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe是由于程序用的是.net4.0的framework,后面的ServiceExample.exe不过是exe文件名。
需要注意这几个事情:
1 StartType即使配置成Automatic,在首次安装成功之后还是要在服务列表中找到并手工启动。(当然,可以在OnStart函数中通过编码实现安装后自动启动)
2 在服务中处理,避免不了使用定时器,要注意这里不能使用Form命名空间下的Timer,因为服务不是窗体类型的应用,所以不能使用这个组件。要使用System.Timers下的Timer。
3 如果服务执行异常,会导致服务启动失败,提示是类似“…服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止”的语句,这种情况下不容易查出毛病在哪,当然可以通过attach to process来调试,不过我自己更习惯于在普通的form程序中通过按钮模拟找出程序执行异常的关键代码,修改通过之后再移植到服务的代码中再测试。
4 要获取服务所在的目录,请使用AppDomain.CurrentDomain.BaseDirectory这个只读属性。建议需要生成服务的执行情况日志的,将日志文件放在服务所在的目录下。
使用C#创建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 ...
- C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)
功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...
随机推荐
- HDUOJ------------1051Wooden Sticks
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- poj----Maximum sum(poj 2479)
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30704 Accepted: 9408 Desc ...
- PLSQL_性能优化效能跟踪工具DBMS_PROFILER分析(案例)
2014-06-01 Created By BaoXinjian
- Python cos() 函数
描述 cos() 返回x的弧度的余弦值. 语法 以下是 cos() 方法的语法: import math math.cos(x) 注意:cos()是不能直接访问的,需要导入 math 模块,然后通过 ...
- SqlServer 获取汉字的拼音首字母
一.该函数传入字符串,返回数据为:如果为汉字字符,返回该字符的首字母,如果为非汉字字符,则返回本身.二.用到的知识点:汉字对应的UNICODE值,汉字的排序规则.三.数据库函数: CREATE FUN ...
- struts2 ValueStack详解,页面获取值el表达式、ognl表达式
http://www.blogjava.net/max/archive/2007/04/28/114417.html 我想用的是el表达式! http://www.cnblogs.com/belief ...
- SpringCloud分布式开发五大神兽
SpringCloud分布式开发五大神兽 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix ...
- Angularjs Module类的介绍及模块化依赖
后面的学习我们会遵循一个控制器管理一个视图,一个路由对应一个视图的单一原则,所以再不会将controller控制器代码直接写到 index.html 中. 我们会应用到angular.js中强大的模块 ...
- 创建Hive/hbase相关联的表异常
hive> CREATE TABLE hperson(id string, name string,email string) STORED BY 'org.apache.hadoop.hive ...
- 解决Pycharm中module 'pip' has no attribute 'main'的问题
背景:pip升级至10.0.1后,使用Pycharm安装Package时一直提示module 'pip' has no attribute 'main'报错信息. 解决方法: 找到Pycharm安装目 ...