创建Windows Service可分为以下几步:
1. 创建一个“Windows Service”项目
2. 设置服务的相关属性,以确定服务的名称及工作机制
属性 设置ServiceName 服务名称。ServiceName 属性的值必须始终与安装程序类中记录的名称匹配。 如果更改此属性,则必须也更新安装程序类的 ServiceName 属性。
CanStop True 指示服务将接受停止运行的请求;false 指示禁止停止运行服务,而且“服务控制管理器”会禁用停止服务的菜单选项。
CanShutdown True 指示服务希望在运行该服务的计算机关闭时收到通知,,以便能够调用 OnShutdown 过程。
CanPauseAndContinue True 指示服务将接受暂停或继续运行的请求;false 指示禁止服务暂停运行和继续运行,“服务控制管理器”会禁用相应的暂停或继续服务的菜单选项。
CanHandlePowerEvent True 指示服务可以处理有关计算机电源状态更改的通知;false 指示禁止服务得到有关这些更改的通知。
AutoLog True 表示在服务执行操作时将信息项写入应用程序的事件日志;false 表示禁用此功能。
3. 访问代码编辑器,并为 OnStart 和 OnStop 过程填写所需的处理。(这两个方法在服务中是必不可少的)
4. 重写其他所有要为其定义功能的方法。如OnShutdown、onContinue、OnPause、OnPowerEvent等方法。
5. 添加服务应用程序所必需的安装程序。
添加安装程序的方法如下:双击要为其添加安装组件的服务,打开其“设计”视图
然后单击设计器的背景以选择服务本身,而不是它的任何内容,设计器具有焦点时,右击然后单击“Add Installer”。
这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。
对于每个服务应用程序,在 ProjectInstaller 类中至少有两个安装组件:ServiceInstaller 组件为项目中的所有服务安装进程,ServiceProcessInstaller 组件是应用程序所包含的每项服务的安装程序。
单击 ServiceInstaller 组件,验证 ServiceName 属性的值和服务本身的 ServiceName 属性的值是否相同。(注意:两者必须一致)
Description属性对应“服务控制管理器”中的“描述”
DisplayName属性对应“服务控制管理器”中的“名称”
StartType 属性确定如何启动服务,它有如下三个选项:
Manual 服务安装后,必须手动启动。
Automatic 每次计算机重新启动时,服务都会自动启动。
Disabled 服务无法启动。
单击 ServiceProcessInstaller 组件并设置Account 属性属性值,可以确定将要运行服务的安全上下文。
默认情况下,服务与已登录的用户在不同的安全上下文中运行。 服务在称为 LocalSystem 的默认系统帐户的上下文中运行,该帐户给服务提供的系统资源访问特权不同于给用户提供的。 可以更改此行为,指定一个不同的用户帐户来运行服务。可以通过操作运行服务的进程的Account 属性来设置安全上下文。 这一属性允许您将服务设置为以下 4 种 Account 类型之一: