与现有服务进行通信的介绍

更新:2007 年 11 月

可以使用 ServiceController 组件连接到现有的服务并控制这些服务的行为。创建 ServiceController 组件的实例时,将该实例设置为与特定的 Windows 服务进行交互。然后可以使用组件实例启动和停止服务以及对服务进行其他操作。例如,可以创建 ServiceController 组件并将其与 Timer 组件结合使用,以便根据固定的时间间隔启动和停止服务。

使用 ServiceController 组件可以执行几项有用的操作。例如:

  • 可以启动、停止或暂停连接到的服务,或者执行该服务能够响应的其他任何管理操作。有关更多信息,请参见如何:对服务执行管理任务

  • 可以查询与组件进行交互的服务的各种属性,并检索属性值。例如,通过检索 CanStopCanPauseAndContinue 属性的值,可以确定是否可以停止、暂停和继续该服务。

  • 可以返回特定计算机上存在的服务列表。

  • 可以指定要在服务上调用的自定义命令。有关自定义命令的更多信息,请参见 MSDN Online。

ServiceController 组件实际上将它的操作请求传递给服务控制管理器,而不是传递给服务本身。然后服务控制管理器停止、启动或暂停服务,或者执行其他指定的操作。ServiceController 将请求传递给服务控制管理器后返回,而不等待服务控制管理器将请求传递给服务。因此,应该在服务类自身而不是在 ServiceController 类中处理异常。

说明:

一般情况下,如果您的目的是使 ServiceController 组件操作包含在同一项目中的服务,则不应将该组件添加到 Windows 服务应用程序中。创建某项服务的项目中的代码不能用于控制此服务,必须从其他上下文中控制此服务。

请参见

任务

如何:创建 ServiceController 组件实例

如何:对服务执行管理任务

如何:检索服务列表

服务管理器示例