基于.Net的Windows Service 编程

Windows的Service的基本构成是:

服务程序:一个可执行的文件,运行后是一个进程,在它运行的过程中可以注册多个服务

服务控制程序:用于给服务程序发生Start,Stop等消息。

服务配置程序:用于安装,协作服务程序。主要通过installutil.exe, sc.exe完成。

而一个服务程序,它包括如下

Main() ---服务进程的入口函数

Service-Main-包含服务的功能,一个服务对应于一个service-main,即一个服务进程,可以注册多个service-main。

处理程序:用于响应SCM消息

一个服务启动的过程,

首先是SCM,创建对应的服务进程(即调用对应的exe的main函数),在main函数中会注册多个服务实体(service-main),这些实体的句柄会被注册到SCM中,SCM会调用其中的消息响应函数(回调函数),完成消息的响应。必须要注意的是,消息响应是异步的,即须在短时间内返回,否则SCM会认为,消息响应失败。

服务的安装:
ServiceProcessInstaller:负责对服务进程进行配置,包括服务对应的帐号。

ServiceInstaller:可以有多个。负载对服务的进行设置,包括启动类型,服务的名字,显示名字等。这里的服务名字必须要和Main中注册的Service的名字相同。

在安装的时候installutil会调用这些installer对应的方法,进行服务的安装。

原文地址:https://www.cnblogs.com/jamesmile/p/2711800.html