当前位置: 首页 > backend >正文

C#测试调用ServiceController类查询及操作服务的基本用法

  微软提供的System.ServiceProcess.ServiceController包支持获取系统服务信息,同时支持启动、停止、刷新服务等操作,其中最重要的类为ServiceController,该类的常用属性及函数如下表所示:

序号名称类型说明
1DisplayName属性服务的显示名称
2ServiceName属性服务的系统名称
3Status属性服务状态,包括Stopped(已停止)、StartPending(正在启动)、StopPending(正在停止)、Running(正在运行)、ContinuePending(正在恢复)、PausePending(正在暂停)、Paused(已暂停)等状态
4MachineName属性服务所在计算机名(默认 “.” 表示本地)
5CanStop属性服务是否支持停止
6CanPauseAndContinue属性服务是否支持暂停/恢复
7DependentServices属性依赖此服务的其他服务
8ServicesDependedOn属性此服务依赖的其他服务
9Start函数启动服务
10Stop函数停止服务
11Pause函数暂停服务
12Continue函数恢复暂停的服务
13Refresh函数刷新服务信息
14WaitForStatus函数等待服务进入指定状态
15ExecuteCommand函数向服务发送自定义命令
16GetServices静态函数获取本地服务列表

  VS2022新建Winform项目,在Nuget包管理器中搜索并安装System.ServiceProcess. ServiceController包。
在这里插入图片描述
  使用ServiceController.GetServices函数获取本机服务列表,并逐个列出服务名、状态等信息,示例代码及运行效果如下所示:

lstServices.Items.Clear();ServiceController[] services = ServiceController.GetServices();for (int i = 0; i < services.Length; i++)
{ListViewItem lvi = new ListViewItem(Convert.ToString(i + 1));lvi.SubItems.Add(services[i].DisplayName + "_" + services[i].ServiceName);lvi.SubItems.Add(services[i].Status.ToString());lvi.Tag = services[i];lstServices.Items.Add(lvi);
}

在这里插入图片描述
  选择某一服务采用定时器方式进行监控,如果服务停止,则提示并重新启动服务,示例代码及运行效果如下所示:

m_monitorService.Refresh();if(m_monitorService.Status== ServiceControllerStatus.Stopped)
{if(MessageBox.Show($"{m_monitorService.DisplayName}服务已停止,是否重新启动?","警告", MessageBoxButtons.YesNo)== DialogResult.Yes){m_monitorService.Start();}
}

在这里插入图片描述

http://www.xdnf.cn/news/15671.html

相关文章:

  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本
  • SQL映射文件
  • Vue3 业务落地全景:脚手架、权限、国际化、微前端、跨端与低代码 50 条实战心法
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十二课——图像直方图统计的FPGA实现
  • 【C++】总结—哪些场景下会产生临时变量或者临时对象?
  • k8s:手动创建PV,解决postgis数据库本地永久存储
  • React条件渲染
  • 零信任产品联合宁盾泛终端网络准入,打造随需而变、精准贴合业务的网络安全访问体系
  • Docker 与 GPU 训练
  • OSPF路由协议的协商过程
  • Java全栈面试实录:从电商场景到AIGC的深度技术考察
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
  • Maven私服仓库,发布jar到私服仓库,依赖的版本号如何设置,规范是什么
  • 精通 triton 使用 MLIR 的源码逻辑 - 第002节:再掌握一些 triton 语法 — 通过 02 softmax
  • 生成式引擎优化(GEO)核心解析:下一代搜索技术的演进与落地策略
  • Python包发布与分发全指南:从PyPI到企业私有仓库
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • Solr7升级Solr8全攻略:从Core重命名到IK分词兼容,零业务中断实战指南
  • css样式中的选择器和盒子模型
  • 《汇编语言:基于X86处理器》第8章 高级过程(2)
  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • PyCharm 高效入门指南(引言 + 核心模块详解)
  • C++拷贝构造
  • 【数据结构】栈和队列
  • 李宏毅《生成式人工智能导论》 | 第15讲-第18讲:生成的策略-影像有关的生成式AI
  • 【读论文】AgentOrchestra 解读:LLM 智能体学会「团队协作」去解决复杂任务
  • 河南萌新联赛2025第一场-河南工业大学
  • Python--plist文件的读取
  • 【Linux】LVS(Linux virual server)