[开发笔记]-WindowsService服务程序开发
Windows服务:Microsoft Windows 服务(即,以前的 NT服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。(摘自百度百科)
一:创建
二:属性
VS自动创建了一个Service1.cs的文件:
点击F4,查看各个属性的含义:
Autolog 是否自动写入系统的日志文件
CanHandlePowerEvent 服务时候接受电源事件
CanPauseAndContinue 服务是否接受暂停或继续运行的请求
CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程
CanStop 服务是否接受停止运行的请求
ServiceName 服务名称
三:功能
点击F7查看Service1.cs的源代码:
默认实现了OnStart和OnStop两个方法。
以向一个文本文件中写入数据操作为例:
- public partial class Service1 : ServiceBase
- {
- public Service1()
- {
- InitializeComponent();
- }
- /// <summary>
- /// 服务启动
- /// http://www.cnblogs.com/babycool
- /// </summary>
- /// <param name="args"></param>
- protected override void OnStart(string[] args)
- {
- string start = string.Format("{0}-{1}",DateTime.Now.ToString("yyyyMMddHHmmss"),"程序启动了。");
- Log(start);
- }
- /// <summary>
- /// 服务停止
- /// http://www.cnblogs.com/babycool
- /// </summary>
- protected override void OnStop()
- {
- string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "程序停止了。");
- Log(start);
- }
- /// <summary>
- /// 系统关闭
- /// http://www.cnblogs.com/babycool
- /// </summary>
- protected override void OnShutdown()
- {
- string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "电脑关闭了。");
- Log(start);
- }
- /*
- /// <summary>
- /// 服务暂停
- /// http://www.cnblogs.com/babycool
- /// </summary>
- protected override void OnPause()
- {
- }
- */
- /*
- /// <summary>
- /// 服务继续
- /// </summary>
- protected override void OnContinue()
- {
- base.OnContinue();
- }
- */
- /*
- /// <summary>
- /// 系统电源状态改变
- /// </summary>
- /// <param name="powerStatus"></param>
- /// <returns></returns>
- protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
- {
- return base.OnPowerEvent(powerStatus);
- }
- */
- void Log(string str)
- {
- string path = "E://def/6.txt";
- using (StreamWriter sw = File.AppendText(path))
- {
- sw.WriteLine(str);
- }
- }
- }
四:安装程序
切换到 Service1.cs[设计] 界面,右击选择“添加安装程序”。
这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller。
选中“serviceInstaller1” 控件,F4打开属性面板,
Description 服务程序的描述信息
DisplayName 服务程序显示的名称
StartType 指定如何启动服务
Manual 服务安装后,必须手动启动
Automatic 每次计算机重新启动时,服务都会自动启动
Disabled 服务无法启动
选中“serviceProcessInstaller1” 控件,F4打开属性面板:
将serviceProcessInstaller类的Account属性改为 LocalSystem。
这样,不论是以哪个用户登录的系统,服务总会启动。
五:生成
右击 项目 选择生成 ,不能通过F5来直接运行服务项目。
六:安装卸载服务
选择 VS组件 “Visual Studio命令提示(2010)” 工具,并以“管理员身份运行"(win7、win8系统下)。
注意:这里必须选择“以管理员身份运行”,否则会报错。
从命令行运行 Installutil.exe 目录 命令,以项目中的已编译可执行文件所在的目录作为参数,安装服务:
因为Installutil.exe程序默认在Windows\System32\目录下,需要通过cmd命令 "cd" 切换目录。
从命令行运行 Installutil.exe /u 目录 命令来卸载服务:
安装服务:
installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe
卸载服务:
installutil.exe /u E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe
七:查看服务状态
在“计算机管理”中,服务 下可以看到刚刚安装的Service服务(cmd命令:services.msc---本地服务设置):
默认是停止状态。右击,选择“启动”,即可开启服务。
通过“属性”,可以查看到更详细的信息。
转载请注明出处。
相关参考:
用C#创建Windows服务(Windows Services) - Gsun - 博客园
C#开发Windows Services服务--服务安装失败的解决办法 - 无名小虾 - 博客园
[开发笔记]-WindowsService服务程序开发的更多相关文章
- Android开发笔记:Android开发环境搭建
基于Eclipse开发 1. 安装JDK 首先进入JDK下载页面,选择需要的版本下载安装. JDK 下载地址:https://www.oracle.com/technetwork/java/javas ...
- WindowsService服务程序开发
Windows服务:Microsoft Windows 服务(即,以前的 NT服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可 ...
- WindowsService服务程序开发 安装和卸载
安装服务:installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe 卸载服务:install ...
- 微信公众号开发笔记1(nodejs开发的)
本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...
- 微信公众号开发笔记1(nodejs开发)
本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...
- Kinect开发笔记之三Kinect开发环境配置具体解释
0.前言: 首先说一下我的开发环境,Visual Studio是2013的,系统是win8的64位版本号,SDK是Kinect for windows SDK 1.8版本 ...
- vue全家桶+Koa2开发笔记(6)--app开发
1.环境配置 详见文章<Nuxt 开发 - 项目初始化> 1.1 使用nuxt脚手架 https://zh.nuxtjs.org/guide/installation 1.2 在nod ...
- odoo开发笔记 -- odoo快速开发技巧
1. 需求分析到位 2. 系统对接,角色用例,数据串接 ---确定,轻易不可变更 3. 业务流程拆分细化 出图--开发人员理解的地步 4. 数据模型建立 --对应角色用例 5. 确立开发计划,划分功能 ...
- LeapMotion控制器 java语言开发笔记--(Java开发环境的准备)
(1)官方文档说的是必须是JDK6,JDK7,我试了一下JDK8也是可以的 (2)我是在Windows系统下用的是Eclipse Java的开发环境这里不再多说.将下载的JDK里面的java.dll和 ...
随机推荐
- 巧妙的实现 CSS 斜线(炫酷的小效果)
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果 ...
- 【Todo】Zookeeper学习
首先,Zookeeper是基于Paxos来进行分布式选举管理的,Paxos的内容可以参考我另一篇文章:http://www.cnblogs.com/charlesblc/p/6037004.html ...
- adb 查看日志信息
adb logcat 详解 (1) 下面命令将只会显示AndroidRuntime类型的Error消息: adb logcat -s AndroidRuntime (2) 显示全 ...
- hdu 3117 Fibonacci Numbers
这道题其实也是水题来的,求Fibonacci数的前4位和后4位,在n==40这里分界开.后4位不难求,因为n达到了10^18的规模,所以只能用矩阵快速幂来求了,但在输出后4位的时候一定要注意前导0的处 ...
- PHP 链式操作
所谓链式操作最简单的理解就是 操作完毕之后再返回对象$this 想必大家工作中基本都快用烂了得东西. 下面就是一个链式操作MYSQL数据库类. 最常见的链式操作 每一个方法操作之后,返回一个对象,直到 ...
- 扩展spring data jpa的数据更新方法时注意事项
//此处必须加@Transactional,否则不能运行,报错 @Transactional @Modifying @Query("update ExamItem a set a.versi ...
- 车辆管理系统之搭建框架 添加必要的数据 安装svn(二)
JAVA EE第一阶段项目——车辆管理系统.MyEclipse + MySQL +powerDesinger +tomcat +svn. 今天组长把项目的分工安排好了!这个周末两天的作业就是我的车主信 ...
- Unity3D Mecanim 动画系统骨骼动画问题解决方法
http://7dot9.com/2014/08/16/unity3d-mecanim%E5%8A%A8%E7%94%BB%E7%B3%BB%E7%BB%9F%E9%AA%A8%E9%AA%BC%E5 ...
- 能源项目xml文件标签释义--<context:component-scan>
<context:component-scan base-package="com.xindatai.ibs" use-default-filters="false ...
- Android Service与Thread的区别
Android Service,后台,Android的后台就是指,它的运行是完全不依赖UI的.即使Activity被销毁,或者程序被关闭,只要进程还在,Service就可以继续运行.比如说一些应用程序 ...