如何创建WindowsService
创建Windows Service可分为以下几步:
1. 创建一个“Windows Service”项目

2. 设置服务的相关属性,以确定服务的名称及工作机制
| 属性 | 设置 |
| ServiceName | 服务名称。ServiceName 属性的值必须始终与安装程序类中记录的名称匹配。 如果更改此属性,则必须也更新安装程序类的 ServiceName 属性。 |
| CanStop | True 指示服务将接受停止运行的请求;false 指示禁止停止运行服务,而且“服务控制管理器”会禁用停止服务的菜单选项。 |
| CanShutdown | True 指示服务希望在运行该服务的计算机关闭时收到通知,以便能够调用 OnShutdown 过程。 |
| CanPauseAndContinue | True 指示服务将接受暂停或继续运行的请求;false 指示禁止服务暂停运行和继续运行,“服务控制管理器”会禁用相应的暂停或继续服务的菜单选项。 |
| CanHandlePowerEvent | True 指示服务可以处理有关计算机电源状态更改的通知;false 指示禁止服务得到有关这些更改的通知。 |
| AutoLog | True 表示在服务执行操作时将信息项写入应用程序的事件日志;false 表示禁用此功能。 |
3. 访问代码编辑器,并为 OnStart 和 OnStop 过程填写所需的处理。(这两个方法在服务中是必不可少的)
4. 重写其他所有要为其定义功能的方法。如OnShutdown、onContinue、OnPause、OnPowerEvent等方法。
5. 添加服务应用程序所必需的安装程序。
添加安装程序的方法如下:双击要为其添加安装组件的服务,打开其“设计”视图

然后单击设计器的背景以选择服务本身,而不是它的任何内容,设计器具有焦点时,右击然后单击“Add Installer”。

这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。
对于每个服务应用程序,在 ProjectInstaller 类中至少有两个安装组件:ServiceInstaller 组件为项目中的所有服务安装进程,ServiceProcessInstaller 组件是应用程序所包含的每项服务的安装程序。 
单击 ServiceInstaller 组件,验证 ServiceName 属性的值和服务本身的 ServiceName 属性的值是否相同。(注意:两者必须一致)
Description属性对应“服务控制管理器”中的“描述”
DisplayName属性对应“服务控制管理器”中的“名称”
StartType 属性确定如何启动服务,它有如下三个选项:
Manual 服务安装后,必须手动启动。
Automatic 每次计算机重新启动时,服务都会自动启动。
Disabled 服务无法启动。
单击 ServiceProcessInstaller 组件并设置Account 属性属性值,可以确定将要运行服务的安全上下文。
默认情况下,服务与已登录的用户在不同的安全上下文中运行。 服务在称为 LocalSystem 的默认系统帐户的上下文中运行,该帐户给服务提供的系统资源访问特权不同于给用户提供的。 可以更改此行为,指定一个不同的用户帐户来运行服务。可以通过操作运行服务的进程的Account 属性来设置安全上下文。 这一属性允许您将服务设置为以下 4 种 Account 类型之一:
User ,当服务已安装并且在由网络上的单一用户指定的帐户的上下文中运行时,该类型将使系统要求提供有效的用户名和密码;
LocalService ,该类型在用作本地计算机上的非特权用户并向任意远程服务器显示匿名凭据的帐户的上下文中运行;
LocalSystem ,该类型在提供多种本地特权并向任意远程服务器显示计算机凭据的帐户的上下文中运行;
NetworkService ,该类型在用作本地计算机上的非特权用户并向任意远程服务器显示计算机凭据的帐户的上下文中运行。
6. 通过从“生成”菜单中选择“生成解决方案”来生成项目。
7. 安装服务。与在 Visual Studio 中创建的大多数项目不同,Windows 服务项目不能通过按 F5 从开发环境直接运行。 这是因为必须安装项目中的服务后,项目才能运行。
安装服务和卸载服务有两种方式:
手动安装服务
1. 在运行中输入“CMD”打开命令行,然后进入到编译好的服务所在目录
2. 在命令行中输入下列代码:installutil yourproject.exe
注意:如果输入命令后,提示installutil不是内部命令,可以找到installutil.exe所在目录,然后将其路径配置到环境变量中。一般.net framework4中,installutil.exe所在目录如下:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
如果不想配置环境变量,还有个变通的方法,将installutil.exe拷贝到编译好的服务所在目录,然后通过命令行安装。
手动卸载服务的步骤跟安装的步骤一样,只是命令中多了个参数: installutil /u yourproject.exe
通过批处理脚本安装卸载服务
打开记事本,键入相应命令,将其保存为bat格式即可
安装脚本:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe yourproject.exe
Pause
卸载脚本
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u yourproject.exe
Pause
如何创建WindowsService的更多相关文章
- VS2010 创建WindowsService服务
1.新建一个Windows 服务 2.添加Installer 这一步很重要,在处理完你的业务逻辑后需要添加一个Installer才能是你的Windows服务被安装. 在VS中添加Installer 右 ...
- Quartz.Net系列(十一):System.Timers.Timer+WindowsService实现定时任务
1.创建WindowsService项目 2.配置项目 3.AddInstaller(添加安装程序) 4.修改ServiceName(服务名称).StartType(启动类型).Description ...
- 本地计算机上的XXX服务启动后停止,某些服务在未由其它服务或程序使用时将自动停止
创建WindowsService,以及安装和卸载网上的资料一搜一大堆,在这里就不再做演示,只说明下博主在工作中使用WindowsService服务出现的错误,以及最终的结局方案. 1.启动window ...
- C#系统服务安装
转载 http://blog.csdn.net/vvhesj/article/details/8349615 1.1创建WindowsService项目 导入需要的引用比如System.configu ...
- HttpListener通讯成功案例
1.创建WindowsService,如下代码 using System;using System.Net;using System.Net.Sockets;using System.ServiceP ...
- 关于windows-server-下MySQL Community版本的的安装与配置
在公司电脑或者服务器上安装软件,都是有要求的,要么购买license-(这个需要申请,难度较大),要么安装免费开源的软件 笔者最近想要安装mysql服务环境,用于数据存储及开发一些功能程序需要连接数据 ...
- WindowsService 创建.安装.部署
windows服务的用法很适合用于一些长期跑的项目..不需要人工操作..不需要服务器一直登陆..很方便.. 不说废话..直接开整.. 启动VS2012..创建Windows服务项目.. 确定..创建成 ...
- windows Service 创建部署
Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就 ...
- C# 创建Windows Service
当我们需要一个程序长期运行,但是不需要界面显示时可以考虑使用Windows Service来实现.这篇博客将简单介绍一下如何创建一个Windows Service,安装/卸载Windows Servi ...
随机推荐
- 分布式缓存之Memcache
〇.为什么要用分布式缓存 1.软件从单机到分布式 走向分布式第一步就是解决:多台机器共享登录信息的问题. 例如:现在有三台机器组成了一个Web的应用集群,其中一台机器用户登录,然后其他另外两台机器共享 ...
- oceanbase 分布式数据库
http://blog.csdn.net/maray/article/details/7230881 http://weibo.com/raywill2
- Golang协程与通道整理
协程goroutine 不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换.Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之,不通 ...
- 怎样把多个Android Project打包成一个APK
怎样把多个Android Project打包成一个APK(你的项目怎样引用其它项目). 怎样把多个android project 打包成一个apk呢,事实上原理是这种.一个主project引用其它的p ...
- Android 设计模式之单例模式
设计模式是前人在开发过程中总结的一些经验,我们在开发过程中依据实际的情况,套用合适的设计模式,能够使程序结构更加简单.利于程序的扩展和维护.但也不是没有使用设计模式的程序就不好.如简单的程序就不用了, ...
- CSS盒模型之三角形
W3上介绍盒模型: 这里教程,但是太过于简单了,http://www.w3.org/community/webed/wiki/CSS/Training/Box_model. 如图,盒模型和背景属性控制 ...
- 爬虫框架_scrapy1
介绍: Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用 ...
- Flatify分页
Flatify分页:<ul uib-pagination total-items="siteCount" items-per-page="1" max-s ...
- 数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...
- datatable的使用
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...