如何创建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 ...
随机推荐
- Android-TextView属性ellipsize多行失效的解决思路
多余文字显示省略号的常规做法 android:ellipsize="end" //省略号显示在末尾 android:ellipsize="middle" //省 ...
- linux删除空行操作:awk、grep、tr、sed
如下:如何删除空行 shen\nshen\\n sen seh sehe she she 真正删除空行,可以使用vim: 通过命令模式删除空行.vim在命令模式下(在vim里输入英文字符:进入命令模式 ...
- 【转载】Linux下套接字学习
感觉这个系列还不错,学习一下. 先看的是第三篇: http://blog.csdn.net/gatieme/article/details/46334337 < Linux下套接字详解(三)-- ...
- web图片转换小工具制作
HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- Solaris 系统启动与关闭
忘掉root密码 更改内核参数后,重启进不了系统 复制---进入单用户模式----恢复文件 系统突然死机,如何尽量减少数据丢失 Sync 同步命令.将内存内容输入到硬盘,相当于保存文档. Unix ...
- Android学习系列(二)布局管理器之线性布局的3种实现方式
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669 LinearLayout是Android控件中的线性布局控件,它包括的子控件 ...
- Allegro16.6和17.0和17.2中将板框导出DXF文件
Allegro16.6和17.0和17.2中将板框导出DXF文件 转载 https://blog.csdn.net/pieces_thinking/article/details/69817600 标 ...
- Allegro基本操作——PCB布线
转:http://blog.sina.com.cn/s/blog_1538bc9470102vyyq.html http://www.elecfans.com/article/80/110/2010/ ...
- 由于扩展配置问题而无法提供您请求的页面...请添加 MIME 映射.--解决方法
http://blog.sina.com.cn/s/blog_4c78de680100quis.html HTTP 错误 404.3 - Not Found由于扩展配置问题而无法提供您请求的页面.如果 ...
- 编码知识 (Unicode、UTF-8、ANSI)
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...