VS.NET下创建Windows服务
1、什么是Windows服务?
Windows服务是随着操作系统自动启动的一种应用程序。它没有用户界面,一般不与用户交互。当然,你的程序也可以记日志,并把消息写入Windows事件日志等。计算机启动时,一般服务也会自动开始运行。甚至在用户登录计算机之前就已经启动了。除了以上,它与一般的程序没有什么大的区别。你可以让它干你想它干的任何事。
通过控制面板>计算机管理>服务控制管理器,你也可以手工启动、暂停、停止服务。
2、使用VS.NET创建Windows服务
在VS.NET的开发环境中创建Windows服务很简单。
1)新建>项目中选择Visual C#项目,选择Windows服务,输入MyService项目名称,确定即可;
2)可以看到向导自动生成一个从ServiceBase继承下来的Service1服务,并重写了OnStart()和OnStop()函数。
3)提供你自己的服务。你可以把这两个函数当成是你启动你的服务的入口函数。比如说:你可以在OnStart()函数中启动socket侦听,再启动一个线程来处理业务操作;而在OnStop()函数中你可以关闭你的socket。当然你也可以设置CanPauseAndContinue的属性,让你的服务支持暂停和恢复操作,当然你同样要重写OnPause()和OnContinue()函数。服务控制管理器就是通过调用OnStart、OnPause、OnContinue和OnStop来启动、暂停、恢复和停止你的服务的。
4)添加安装代码。Windows服务不象其它EXE程序,它还必须要添加安装代码。所谓安装代码,其实并不是安装在系统中,而设置被安装时的服务的属性。真正的安装到系统还在下一步。打开设计视图,右键菜单中单击“添加安装程序”,或者在属性中单击”添加安装程序“,则自动添加了一个ServiceProjectInstaller和ServiceInstaller组件类。
5)设置属性。
设置ServiceInstaller组件的属性
ServiceName:服务名称
DisplayName:显示名称
Description:描述
StartType:启动类型,包括Automatic(自动)、Manual(手动)、Disabled(禁用)
设置ServiceProcessInstaller的属性
Account:帐户类型,包括LocalService(本地服务)、LocalSystem(本地系统)、NetworkService(网络服务)、User(指定用户)
需要注意的是如果安装成本地服务,就需要进行如下设置:
this.serviceProcessInstaller1.Username = "NT AUTHORITY\\LocalService"
this.serviceProcessInstaller1.Password = ""
6)编译即可完成服务。
3、安装Windows服务
1)打开VS.NET命令提示符
2)执行命令 InstallUtil 路径+MyServcie.exe,其中路径是你的服务所在的整个路径。
3)在服务控制管理器中可以看到你的服务了。
4、卸载Windows服务。
想更新你的服务,先要卸载你的服务再安装新的服务。卸载很简单,使用InstallUtil带上/u参数即可。执行命令:Installutil /u 路径+ MyService.exe
5、调试Windows服务
最麻烦的是调试了,你不能象其它程序一样直接调度你的服务,你必须使用VS.NET把运行的进程附加(Attach)来调试服务。
1)先打开你的服务程序
2)在服务控制管理台中启动你的服务
3)点击”调试>进程“,在可用进程中选择你的服务程序,单击附加,确定、关闭即可。
4)使用断点,象调试其它程序一样进行调试。
当然,以上调试很不方便的。最好的技术巧就是,你最好先把你的代码重新写一个Main函数,修改你的工程类型为控制台程序,象一般的程序一样,把你的代码都调试好了,再修改回来。