C#使用ServiceController控制Windows服务启停

一颗松果
一颗松果
发布时间:2026-10-13| 2人浏览过
原创

本文详细解析如何在C#程序中通过ServiceController类控制Windows系统服务的启动与停止。主要包含准备工作、核心代码实现以及异常处理机制,帮助开发者快速集成服务管理功能。

实现原理与准备条件

要控制Windows服务,需要使用.NET Framework提供的System.ServiceProcess命名空间。核心类为ServiceController,它允许应用程序连接到本地或远程计算机上的服务并与其交互。

  • 依赖环境:确保项目引用了System.ServiceProcess.dll(在.NET Framework中默认引用,.NET Core/5+需安装NuGet包)。
  • 权限要求:操作系统服务通常需要管理员权限,程序应以管理员身份运行或配置相应的执行权限。
  • 关键属性:ServiceName用于指定目标服务,Status获取当前状态。

第1步:实现服务停止功能

目的:安全地关闭指定名称的服务,并确保其真正进入“已停止”状态后返回结果。

核心动作:创建ServiceController实例,调用Stop()方法,并使用WaitForStatus()阻塞等待。

/// <summary>
/// 停止服务
/// </summary>
private bool StopService(string StopServiceName)
{ 
 // 初始化服务对象
 ServiceController service = new ServiceController(StopServiceName); 
 try 
 { 
  // 发送停止指令
  service.Stop(); 
  // 等待服务状态变为 Stopped,防止立即返回导致的误判
  service.WaitForStatus(ServiceControllerStatus.Stopped); 
 } 
 catch(Exception) 
 {
  return false;
 }
 return true;
}

完成状态判断:若未抛出异常且成功等待至Stopped状态,返回true;否则捕获异常返回false。

第2步:实现服务启动功能

目的:启动指定名称的服务,并验证其是否成功进入“正在运行”状态。

核心动作:同样实例化ServiceController,调用Start(),然后等待Running状态。

/// <summary>
/// 开启服务
/// </summary>
private bool StartService(string StartServiceName) 
{ 
 ServiceController service = new ServiceController(StartServiceName); 
 try 
 { 
   // 发送启动指令
   service.Start(); 
   // 等待服务状态变为 Running
   service.WaitForStatus(ServiceControllerStatus.Running);
 } 
 catch (Exception)
 {
  return false;
 }
 return true;
}

注意:Start()可以传入参数数组以传递给服务的OnStart方法,但在上述基础示例中未使用参数。

注意事项与排错

  • 服务名称匹配:ServiceController构造函数中的名称必须是服务的内部名称(Service Name),而非显示名称。可通过注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services或命令提示符输入sc query查看准确名称。
  • 超时问题:部分服务启动较慢,WaitForStatus有默认超时时间。如果服务启动超过默认限制,可能会抛出InvalidOperationException。在生产环境中,建议设置合适的超时值或使用轮询检查。
  • 权限不足:如果程序没有管理员权限,调用Start()或Stop()将抛出异常,需在catch块中区分权限错误与其他错误。

总结

通过ServiceController类,C#开发者可以便捷地管理Windows服务的生命周期。StopService和StartService两个方法封装了标准的启动/停止逻辑,结合WaitForStatus确保了操作的可靠性。以上就是C#实现操作windows系统服务(service)的方法的详细内容,更多关于C#服务控制的技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。