一、 VS2012下开发Windows服务

1、 打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图:

2、 创建好后,编译器会自动创建一些文件,其中会有一个Service1类文件,该文件是服务的关键,我们可以将其重命名,这里我将其命名为MainService,如下图:

3、 在MainService的后台代码中会自动创建一些方法,包括服务的启动和停止方法等,如下图:

4、 将服务启动时要执行的操作放在OnStart方法中,服务停止时要执行的操作放在OnStop方法中

5、 在MainService.cs设计器中,单击邮件,选择选择添加安装程序,便会生成一个ProjectInstaller.cs的文件,如图所示:

6、 设置ProjectInstaller.cs的属性,切换到属性设置界面

(1) 选择serviceInstaller1,并设置相应属性如下图所示:

其中:Description属性用于设置服务安装之后再服务界面上显示的描述信息;

DisplayName属性用于设置服务安装之后再服务界面上显示的服务名称;

ServiceName属性用于设置服务的名称,此名称必须与ServiceBase类的ServiceName属性设置的名称一致,该名称用于系统标识此服务,可以理解成DisplayName为ServiceName的别名;

StartType属性用于设置服务的启动方式。

(2) 选择serviceProcessInster1,设置其属性如下:

此处主要设置Account属性,该属性用来指示运行该服务时的账户类型,一般设置为LocalSystem。

7、 到此步一个简单的windows服务就创建好了,编译程序会生成一个EmailService.exe的可执行文件,接下来便是安装服务了。

二、Windows服务的安装

Windows服务的安装有多种方式,比如可以再cmd下调用命令来安装,也可以写一个安装程序来安装,此处介绍使用bat批处理来安装。

1、 安装Windows服务需要用到InstallUtil.exe程序,该程序位于:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319 .NET4.0

C:\Windows\Microsoft.Net\Framework64\v2.0.50727 .NET2.0

2、 我们可以再批处理命令中直接调用以上目录中的InstallUtil.exe程序,也可以将该程序拷贝到应用程序的目录下,此处我选择奖该程序拷贝到应用程序的目录下,同时将批处理文件也创建在应用程序的的目录下,如下图所示:

3、 注册服务的批处理命令如下所示:

%~dp0\InstallUtil.exe %~dp0\EmailService.exe

Net Start EmailService  --这里是安装完成之后启动服务

sc config EmailService start= auto –这里是将服务设置为自动启动

pause

其中%~dp0表示批处理所在的目录;

4、 注销服务的批处理命令如下所示:

%~dp0\InstallUtil.exe /u %~dp0\EmailService.exe

pause

5、 启动服务的批处理命令如下所示:

net start EmailService

pause

6、 停止服务的批处理命令如下所示:

net stop EmailService

pause

7、 当我们运行注册服务批处理命令之后便会进行服务安装,如果安装成功,我们在服务界面将看到该服务,如下图所示:

8、 安装服务时的注意事项

(1) 安装程序InstallUtil.exe的版本必须于创建Windows服务的.NET版本一致;

(2) 如果是Win7以上版本的系统,在运行批处理命令时,应以管理员身份运行;

(3) 如果是Win7以上版本的系统,应特别注意安装程序和应用程序的路径,以便能够正确的写批处理命令。

原文转载:http://blog.csdn.net/huangcailian/article/details/42237013

最新文章

  1. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
  2. spring-事务管理
  3. Http 和TCP的关系,TCP长连接和短连接有什么区别?
  4. android 开源 + 一些素材网站
  5. 转:java 类名 this 的使用
  6. 【转】COCOS2D-X之不断变化的数字效果Demo
  7. SQL中去除某字段中的某个字符语法
  8. poj 1604 Just the Facts
  9. jQuery多文件
  10. 理解交互设计之"行为设计与对象设计"
  11. firefox 28.0
  12. [转载]Web前端和后端之区分,以及面临的挑战【转】
  13. JXLS使用方法(文件上传读取)xlsx文件读取
  14. python/ Django之中间件
  15. 20165221 《网络对抗技术》EXP2:后门原理与实践
  16. SSIS - 7.发邮件任务
  17. 说一说MVC的CompressActionFilterAttrubute(五)
  18. 初识服务器和Linux
  19. 转载CSDN博客步骤
  20. Bytom交易说明(账户管理模式)

热门文章

  1. scrapy 框架入门
  2. python字符串操作简单方法
  3. Shell脚本 | 截取包名
  4. 理解极大似然估计(MLE)
  5. vue-01
  6. TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()
  7. javascript变量提升详解
  8. Configure Many-to-Many relationship:
  9. js获取带#号链接后的参数
  10. [转]Windows下配置Node.js和Cordova