Win服务程序编写以及安装一般步骤
Win服务程序编写以及安装一般步骤
Windows服务的优点有:1. 能够自动运行。2. 不要求用户交互。3. 在后台运行。本文将介绍常见服务程序编写的一般步骤以及注意事项。
设计服务程序实例:
- 创建服务程序,主要功能:隔段时间自动写入字符串到文本文档中。
使用语言:VB.Net,开发工具:Visual Studio 2010
- 新建服务项目
如图1所示:

图1
- 添加组件
操作如图2,得到如图3结果

图2

图3
System.windows.forms中的time组件在服务程序中部适用,所以此处要选择system.timers.timer。继续图3操作后设置timer以及service1的属性.如图4/5。

图4

图5
- 程序编写

图6
代码如下:
Protected Overrides Sub OnStart(ByVal args() As String)
' 请在此处添加代码以启动您的服务。此方法应完成设置工作,
' 以使您的服务开始工作。
Timer1.Start()
End Sub
Protected Overrides Sub OnStop()
' 在此处添加代码以执行任何必要的拆解操作,从而停止您的服务。
Timer1.Stop()
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Dim witer As StreamWriter = New StreamWriter("C:\string.txt", True)
witer.WriteLine("YourText")
witer.Close()
End Sub
或者基于filestream写入,代码如下:
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Dim fstream As New FileStream("G:\string.txt", FileMode.OpenOrCreate, FileAccess.Write)
Dim write As New StreamWriter(fstream)
fstream.Seek(, SeekOrigin.End)
write.Write("MyTestService" & i.ToString)
write.Close()
fstream.Close()
i +=
End Sub
- 服务程序安装

图7
图7操作后出现如图8界面,设置安装控件属性如图9和图10

图8

图9

图10
.net编写服务程序集成了许多的功能,此处创建服务安装,并不需要编写程序,只需添加控件,修改属性即可,十分方便。
- 编译生成
编译会出现警告,如图11,但程序没出先错误,查看C:\出现"string.text"文档,里面写入了文本。

图11
- 安装及卸载
启动vs命令提示符窗口。如图12

图12
安装
注意要以管理员身份运行
Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security。解决办法,以管理员身份运行即可。
输入代码:
InstallUtil C:\Users\h\Desktop\timetest_WindowsService\timetest_WindowsService\bin\Debug\timetest_WindowsService.exe

图13
卸载
installutil/u C:\Users\h\Desktop\timetest_WindowsService\timetest_WindowsService\bin\Debug\timetest_WindowsService.exe

图14
默认情况下,Windows服务基于安全考虑,是不允许任何服务程序和桌面进行交互的。也就是说,使用任何的Windows Form 的很多特性将会莫名奇妙的不起作用,如进行messageBox的显示,启动另一进程,诸如:打开某个pdf格式的文件,者使用System.Windows.Form.Timer对象也不行,这种不起作用表现在没有进行服务程序安装的情况下调试的时候会提示无法启动服务需要安装的警告,但是 messageBox仍会显示,pdf格式的文档仍会打开;奇怪的是,在安装后,启动服务程序后,messageBox以及pdf格式的文档均不会打,开程序将没任何的响应。由于Windows服务具有难以调试的特点,如果不注意这点,你反复检查自己的代码,都很难发现问题的所在的。
但也并不是说不能编写复杂的交互式服务程序,只是涉及到的知识会更复杂一些,通常会用涉及到一些Windows API接口的操作。本文旨在说明服务程序编写的一般步骤,对于复杂的交互服务程序,其一般流程大致相同,网上已有大神在此有详细的解释说明。可参考博客:http://www.cnblogs.com/gnielee/archive/2010/04/08/session0-isolation-part2.html,里面有很详细的介绍。
Win服务程序编写以及安装一般步骤的更多相关文章
- windows后台服务程序编写
Windows后台服务程序编写 1. 为什么要编写后台服务程序 工作中有一个程序需要写成后台服务的形式,摸索了一下,跟大家分享. 在windows操作系统中后台进程被称为 service. 服务是一种 ...
- PostgreSQL在win7上安装详细步骤
原文:PostgreSQL在win7上安装详细步骤 PostgreSQL安装: 一.windows下安装过程 安装介质:postgresql-9.1.3-1-windows.exe(46M),安装过程 ...
- Storm集群安装部署步骤【详细版】
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...
- windows2003最详细的安装操作步骤.(最详细)
以下为windows2003的安装操作步骤,由于安装操作步骤较多,安装可能需要一定的实际安装经验.安装时请参照此文档一步步完成安装. 一.首先准备好Windows2003安装光盘CD1,将CD1光盘放 ...
- Apache安装配置步骤
注释:这里以Linux 红帽商业版为例~~~~~~~纯手打啊 Apache安装配置步骤 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend ...
- an'gularjs 环境搭建之NodeJS、NPM安装配置步骤(windows版本)
NodeJS.NPM安装配置步骤(windows版本) :http://xiaoyaojones.blog.163.com/blog/static/28370125201351501113581/ ...
- linux/centos下安装nginx(rpm安装和源码安装)详细步骤
Centos下安装nginx rpm包 ...
- CentOS7/RHEL7安装Redis步骤详解
CentOS7/RHEL7安装Redis步骤详解 CentOS7/RHEL7安装Redis还是头一次测试安装了,因为centos7升级之后与centos6有比较大的区别了,下面我们就一起来看看Cent ...
- Storm集群安装部署步骤
本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...
随机推荐
- Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)
本文转自:自己的微信公众号<集成电路设计及EDA教程> <Innovus教程 - Flow系列 - MMMC分析环境的配置概述(理论+实践+命令)> 轻轻走过,悄悄看过,无 ...
- g++ -std=c++11 -g -o test emit_log_direct.cpp
g++ -std=c++11 -g -o test emit_log_direct.cpp
- [leetcode] 87. Scramble String (Hard)
题意: 判断两个字符串是否互为Scramble字符串,而互为Scramble字符串的定义: 字符串看作是父节点,从字符串某一处切开,生成的两个子串分别是父串的左右子树,再对切开生成的两个子串继续切开, ...
- 深入了解数据校验:Java Bean Validation 2.0(JSR380)
每篇一句 吾皇一日不退役,尔等都是臣子 相关阅读 [小家Java]深入了解数据校验(Bean Validation):基础类打点(ValidationProvider.ConstraintDescri ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- Mysql处理中文乱码的问题
一开始在创建完毕数据库和数据表之后,插入中文发现在mysql命令行和在sqlyog终端上看都是乱码,查看了一些文章,写的内容都一样,无非是如下几个步骤: 1:修改数据库字符集为utf8 2:修改数据表 ...
- Oracle JDK与OpenJDK到底有什么不同?
不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么? Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDK.O ...
- 那些年,想和你一起认识的SpringCloud Eureka
前几天鲁班LB跟我说:你玩把游戏都要半个钟啦,为何不用这时间来看看书,如果涨工资还可以帮我买个皮肤. 面对如此合理的这需求,但我不以为然,事实上并不是我不想学习,而是 ↓ 实力不允许呀~ 直到有一天, ...
- 0 推荐系统——CB和CF
一.基于内容的推荐(CB,Content-based Recommendations): 基于内容的推荐CB应该算是最早被使用的推荐方法,它根据用户过去喜欢的产品(本文统称为 item),为用户推荐和 ...
- 异常处理 _this.setData is not a function
_this.setData is not a function;at api request success callback function TypeError: _this.setData is ...