当前位置: 首页 > 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.lryc.cn/news/592346.html

相关文章:

  • vscode编辑Markdown文件
  • 【51】MFC入门到精通——MFC串口助手(一)---初级版(串口设置、初始化、打开/关闭、状态显示),附源码
  • el-date-picker 如何给出 所选月份的最后一天
  • 几款开源的安全监控与防御工具分享
  • 电脑装机软件一键安装管理器
  • 开源的大语言模型(LLM)应用开发平台Dify
  • 飞凌嵌入式亮相第九届瑞芯微开发者大会:AIoT模型创新重做产品
  • 【48】MFC入门到精通——MFC 文件读写总结 CFile、CStdioFile、CFileDialog
  • 源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶
  • 面试150 克隆图
  • 写在 35 岁生日的时候
  • 面试150 被围绕的区域
  • vue2 面试题及详细答案150道(71 - 80)
  • vue2 面试题及详细答案150道(91 - 100)
  • C++:vector(3)
  • 基于 fetch + ReadableStream 流式输出 实现 AI 聊天问答
  • 平板可以用来办公吗?从文档处理到创意创作的全面测评
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 涉及海量数据的查询SQL建议使用“数据库函数”封装并调用
  • TCP通讯开发注意事项及常见问题解析
  • 如何检查GitHub上可能潜在的信息泄漏
  • web开发-HTML
  • leetcode2_135.分发糖果
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • 华为欧拉系统(openEuler)安装 Docker 容器完整教程
  • Gemini Function Calling 和 Qwen3 Embedding和ReRanker模型
  • 服务器清理空间--主要是conda环境清理和删除
  • 弧焊机器人智能节气装置
  • Huber Loss(胡贝损失)详解:稳健回归的秘密武器 + Python实现
  • 【Git专栏】git如何切换到某个commit(超详细)