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 ...
随机推荐
- 百度云下载神器 速盘SpeedPan v1.9.7
速盘 – 不一样的度盘神器!SpeedPan 是一款由吾爱破解论坛会员"菩提叶"制作的度盘满速下载工具.这款百度网盘高速下载工具,免费小巧简单易用,采用了Aria2多线程下载,支持 ...
- Hash的应用
思路:此题比较简单,直接贴代码 #include <stdio.h> int main(){ int N; ){ ]={}; ;i<N;i++){ int x; scanf(&quo ...
- 使用WebService发布soap接口,并实现客户端的https验证
什么是https HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证. 如何进行身份验证? 首先我们要明白什么是对称 ...
- HBaseCon Asia2019 会议总结
一.首先会议流程. 1. The current status of HBase 2.The advantage and technology trend of HBase on the cloud ...
- javascript案例之放大镜效果
效果图 如何实现该效果呢?? 我们先来进行分析 实现思路 1.鼠标移入移出事件 1>移入:悬浮块和大图显示 2>移出:悬浮块和大图隐藏 2.鼠标移动(悬浮块随着鼠标移动) 1>获 ...
- golang http json http://www.alexedwards.net/blog/golang-response-snippets
http://www.alexedwards.net/blog/golang-response-snippets https://gist.github.com/andreagrandi/97263a ...
- 个人永久性免费-Excel催化剂功能第102波-批量上传本地图片至网络图床(外网可访问)
自我突破,在100+功能后,再做有质量的功能,非常不易,相对录制视频这些轻松活,还是按捺不住去写代码,此功能虽小,但功课也做了不少,希望对真正有需要的群体带来一些惊喜. 背景介绍 图床的使用,一般是写 ...
- 《VR入门系列教程》之7---DK2和Crescent Bay
The DK2 于2014年春,Oculus发布了第二代开发版头显设备,代号为DK2.与DK1相比,Oculus Rift DK2的外观有很大改进,并且轻了许多,体积仍然比较大,可以罩住大部分 ...
- linux初学者-文件权限
linux初学者-文件权限 lunix系统都是以文件的形式存在,自然而然的就会要求不同的用户拥有不同的权限,这也是系统能够运行的根本保证,下文将对文件的权限管理进行简要的介绍. 1.文件属性的查看 - ...
- python基础——变量
变量是只不过保留的内存位置用来存储值.这意味着,当创建一个变量,那么它在内存中保留一些空间. 根据一个变量的数据类型,解释器分配内存,并决定如何可以被存储在所保留的内存中.因此,通过分配不同的数据类型 ...