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

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.dtcms.com/a/286094.html

相关文章:

  • Python数据类型探秘:解锁编程世界的魔法钥匙
  • Vue (Official) v3.0.2 新特性 为非类npm环境引入 globalTypesPath 选项
  • 【爬虫】03 - 爬虫的基本数据存储
  • DolphinDB × Vanna:构建支持自然语言查询的企业级 RAG 系统
  • bash-completion未安装或未启用
  • IELTS 阅读C15-Test 2-Passage 1
  • LeafletJS 性能优化:处理大数据量地图
  • 零基础入门:用C++从零实现TCP Socket网络小工具
  • 二进制写入与文本写入的本质区别:系统视角下的文件操作
  • 解决【软件安装路径】失败的方法
  • MySQL事务四大隔离级别
  • 服务器清理空间--主要是conda环境清理和删除
  • Github库镜像到本地私有Gitlab服务器
  • 【DataWhale】快乐学习大模型 | 202507,Task03笔记
  • LVS(Linux Virtual Server)详细笔记(实战篇)
  • Day06_C语言网络编程20250718
  • Altera Quartus:cof+tcl脚本实现编译完成后自动生成jic文件
  • 2025测绘程序设计国赛实战:一轮终章 | 单向后方交会C#实现
  • 中证1000股指期货保证金交易的比例是多少?
  • 移动游戏性能优化通用技法
  • C语言实战:超级玛丽游戏
  • 【软件测试】软件开发模型与需求分析
  • 网关-微服务网关入门
  • 数据交易“命门”:删除权与收益分配的暗战漩涡
  • 包管理工具npm cnpm yarn的使用
  • uniapp基本使用
  • 碰一碰发视频系统源码搭建与碰碰贴写文案,写好评定制化开发:支持OEM
  • 归一化波动率指标
  • 解密文本格式的魔力世界
  • 正则表达式,Collection集合,迭代器