此文旨在记录个人对windows服务的理解以及学习记录,高人可以直接绕行。
1.Windows 服务体系结构
@http://technet.microsoft.com/zh-cn/library/aa998749(v=exchg.65).aspx
Windows 服务(也称服务应用程序)是无论用户是否登录都运行在 Windows 计算机上的应用程序。Windows 服务包含一个可执行文件、一个存储应用程序组件的目录,以及定义服务参数的注册表设置。Windows 服务实现一个可编程的接口,SCM 可以使用该接口来控制服务。Windows 服务既可以在系统启动时自动启动,也可以由用户使用服务控制程序来手动启动。服务控制程序是使用 SCM 功能来控制服务的应用程序。例如,“服务”工具和命令行工具 net.exe 和 SC.exe 就是服务控制程序。
下列图说明了 Windows 服务体系结构。
注意:SCM 进程是一个远程过程调用 (RPC) 服务器服务。为了控制远程计算机上的服务,服务控制程序使用 RPC 在本地或通过网络与 SCM 通信。
2. .NET Windows服务(名称空间System.ServicesProcess)
1.服务程序
.NET Framework的服务的创建需要继承ServiceBase类.ServiceBase类用于注册服务、响应开始、停止等请求。
2.服务控制程序
ServiceController类可以获取服务的相关信息,如服务名称、服务类型以及控制服务的开始、停止等操作。
3.服务的安装与配置
服务必须在注册表中配置(HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices)。
服务的安装可以有两种方式:
1.手动写注册表
通过regedit命令,我们可以打开注册表编辑已有的服务或添加新的服务项。
2.服务安装程序
ServiceProcessInstaller类 用于配置服务进程,该配置信息为该服务进程下的所有服务所共享。
ServiceInstaller类 用于配置具体的服务,服务进程中的每个服务都需要一个属于自己的ServiceInstaller实例。
RunInstallerAttribute特性 指定一个安装程序(继承Installer),在安装程序集时,是否可以被自定义安装程序或安装工具(如installutil.exe)调用。
3.服务控制程序简单示例
源代码: http://files.cnblogs.com/BugQiang/BugQiang.SCM.rar