【C#】使用C#窗体应用开启/停止Apache、MySQL服务

目录

一、前言

二、效果图

三、配置文件

四、代码

五、一键启动/停止所有服务


一、前言

使用C#窗体应用开启Apache、MySQL服务,不仅仅是Apache、MySQL,其他服务也可以使用同样的方法操作,包括开启自己写的脚本服务。

二、效果图

两种状态:

① 开启Apache:点击启动按钮,开启apache,同时服务状态切换为运行中

② 停止apache:点击停止按钮,停止apache,同时服务状态切换为已停止

三、配置文件

用于存储需要操作的服务的路径和服务命,要根据实际情况修改,存放在”\bin\Debug\“目录下,命名为app.ini

[section]
apache=httpd
mysql=mysqld
python=StartService.vbs
python2=Python
apache_path=E:\phpstudy_pro\Extensions\Apache2.4.39\bin\httpd.exe
mysql_path=E:\phpstudy_pro\Extensions\MySQL5.7.26\bin\mysqld.exe
python_path=E:\Pyhton\flow\

四、代码

这里只展示开启和关闭Apache服务的代码,其他服务操作的代码一样就不再展示了,只需要把服务名和服务所在路径替换就可以了。

业务逻辑:

需要先读取配置文件app.ini文件里的内容,

① 开启服务:获取到apache的路径,构建启动信息,开始启动apache服务。

② 关闭服务:先获取apache的服务名(注意是服务名,不是路径),再查找名为apache的进程,找到后关闭该服务(为了确保确实关闭了,在2秒后使用Kill()强制关闭)。

读取配置文件的参数及用法可以看这篇文章

【C#】读取ini配置文件的内容_c#读取ini配置文件-CSDN博客

//配置文件路径
private string iniFilePath = Directory.GetCurrentDirectory() + "\\app.ini";

#region API函数声明
[DllImport("kernel32")]//返回取得字符串缓冲区的长度
private static extern long GetPrivateProfileString(string section, string key,
	string def, StringBuilder retVal, int size, string filePath);

#endregion

#region 读Ini文件

public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
{
	if (File.Exists(iniFilePath))
	{
		StringBuilder temp = new StringBuilder(1024);
		GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
		return temp.ToString();
	}
	else
	{
		return String.Empty;
	}
}



// 开启apache服务
private void apache_start_Click(object sender, EventArgs e)
{
	string apache_path = ReadIniData("section", "apache_path", "NoText", iniFilePath);
	string StartScript = @apache_path;

	// 构建启动信息
	ProcessStartInfo startInfo = new ProcessStartInfo
	{
		FileName = StartScript,
		CreateNoWindow = true, // 不创建窗口
		UseShellExecute = false, // 不使用系统外壳程序启动
		WindowStyle = ProcessWindowStyle.Hidden // 隐藏窗口
	};

	// 启动Apache
	using (Process apacheProcess = Process.Start(startInfo))
	{

		// 你可以在这里监控进程,或等待它结束
		apache_status.Text = "运行中";
		apache_status.ForeColor = System.Drawing.Color.Green;

	}
}
// 停止apache服务
private void apache_stop_Click(object sender, EventArgs e)
{
	string apache = ReadIniData("section", "apache", "NoText", iniFilePath);

	try
	{
		// 获取所有名为 "apache" 的进程  
		Process[] processes = Process.GetProcessesByName(apache);

		foreach (Process process in processes)
		{
			try
			{
				// 尝试优雅地关闭进程(如果可能的话)  
				// 注意:apache可能没有主窗口,因此CloseMainWindow可能不起作用  
				process.CloseMainWindow();

				// 等待一段时间看进程是否关闭  
				if (!process.WaitForExit(2000)) // 等待5秒  
				{
					// 如果进程没有关闭,则强制结束它  
					process.Kill();
				}
				apache_status.Text = "已停止";
				apache_status.ForeColor = System.Drawing.Color.Crimson;
			}
			catch (Exception ex)
			{
				// 处理任何异常,比如权限不足等 
				MessageBox.Show("Error closing process: " + ex.Message);
			}
		}

		MessageBox.Show("Apache services have been closed.");
	}
	catch (Exception ex)
	{
		// 处理获取进程列表时的任何异常  
		MessageBox.Show("Error getting process list: " + ex.Message);
	}
}

五、一键启动/停止所有服务

一键启动/关闭所有服务代码就不再展示,其原理是把需要开启的服务放到同一个点击事件里,比如说一键开启Apache、MySQL服务,只需要把开启Apache的代码和开启MySQL服务的代码放到同一个点击事件里就可以了。一键停止所有服务也是同样的道理,就不再贴代码了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/480139.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

短视频矩阵系统--技术实际开发打板3年真实开发分享

短视频矩阵系统--技术实际开发打板3年真实开发分享,短视频矩阵系统/矩阵获客系统是一种基于短视频平台的获客游戏。短视频矩阵系统可以通过多账号发布来替代传统的单账号游戏。可以一键发布所有账号,批量制作多个视频AI智能剪辑。过去很多人只能完成的工…

新版仿蓝奏网盘|城通网盘|百度网盘|闪客网盘|网盘源码系统,个人网盘系统

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 这是一款仿蓝奏网盘、城通网盘、百…

利用CSS3实现正在加载效果

一、代码区域 1.1css3代码 <style>* {padding: 0;margin: 0;list-style: none;}.loading {width: 300px;height: 100px;margin: 100px auto;}.loading ul {height: 100px;width: 65px;margin: 0 auto;display: flex;align-items: center;}.loading ul li {margin: 0 5p…

【XR806开发板试用】使用PWM模块模拟手机呼吸灯提示功能

一般情况下&#xff0c;我们的手机在息屏状态&#xff0c;当收到消息处于未读状态时&#xff0c;会有呼吸灯提醒&#xff0c;这次有幸抽中XR806开发板的试用&#xff0c;经过九牛二虎之力终于将环境搞好了&#xff0c;中间遇到各种问题&#xff0c;在我的另一篇文章中已详细描述…

Nginx 全局块配置 worker 进程的两个指令

1. 前言 熟悉 nginx 运行原理的都知道&#xff0c;nginx 服务启动后&#xff0c;会有一个 master 进程和多个 worker 进程&#xff0c;master 进程负责管理所有的 worker 进程&#xff0c;worker 进程负责处理和接收用户请求 在这里我们所要研究的是 master 进程一定要创建 wo…

后端前行Vue之路(一):初识Vue

1.Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方…

罗格朗逸景PLUS IOT智能系统发布,为您提供更智能的生活体验!

罗格朗全新推出的逸景PLUS IOT智能系统现已正式上市,采用纤薄纯平的设计,功能丰富全面,支持灯光/温度/场景控制、背景音乐等多种功能,整合罗格朗IOT2.0系统,集成可视对讲,为用户打造更舒适、安全的智能生活。 罗格朗智能家居 罗格朗是全球电气与智能建筑系统专家,创立于1865年…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生&#xff0c;为了更好的使校园考研有一个更好的环境好好的学习&#xff0c;建议一个好的校园网站&#xff0c;是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…

大模型分布式推理ray

一、目录 1 框架 2. 入门 3. 安装教程 4. 相关文档、案例阅读 二、实现 1 框架&#xff1a;Ray&#xff1a;将一个模型拆分到多个显卡中&#xff0c;实现分布式预测、训练等功能。 2. 入门 &#xff1a; 案例&#xff1a;通过ray 实现分布式部署&#xff0c;分布式推理服务。…

FMEA助力新能源汽车行业腾飞:安全、效率双提升

随着新能源汽车市场的迅猛发展&#xff0c;各大车企纷纷加大研发力度&#xff0c;力求在激烈的市场竞争中脱颖而出。其中&#xff0c;FMEA&#xff08;故障模式与影响分析&#xff09;作为一种先进的质量管理工具&#xff0c;正被越来越多地应用于新能源汽车的研发和生产过程中…

学习几个地图组件(基于react)

去年开发时用的公司封装的地图组件&#xff0c;挺方便的&#xff0c;但是拓展性不强&#xff0c;所以看看有哪些优秀的开源地图组件吧 1、React Leaflet 介绍&#xff1a;开源的JavaScript库&#xff0c;用于在web上制作交互式地图&#xff0c;允许你使用React组件的方式在应…

前端使用正则表达式进行校验

一、定义 设计思想是用一种描述性的语言定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;我们就认为它“匹配”了&#xff0c;否则&#xff0c;该字符串就是不合法的。 在 JavaScript中&#xff0c;正则表达式也是对象&#xff0c;构建正则表达式有两种方式&#x…

如何减少pdf的文件大小?pdf压缩工具介绍

文件发不出去&#xff0c;有时就会耽误工作进度&#xff0c;文件太大无法发送&#xff0c;这应该是大家在发送PDF时&#xff0c;常常会碰到的问题吧&#xff0c;那么PDF文档压缩大小怎么做呢&#xff1f;因此我们需要对pdf压缩后再发送&#xff0c;那么有没有好用的pdf压缩工具…

5、鸿蒙学习-ArkTs的基本组成

说明 自定义变量不能与基础通用属性/事件名重复 装饰器&#xff1a;用于装饰类、结构、方法以及变量&#xff0c;并赋予其特殊含义。如上述示例中Entry、Component和State都是装饰器&#xff0c;Component表示自定义组件&#xff0c;Entry表示该自定义组件为入口组件&#xff…

亚马逊AWS展示高效纠错的全新量子比特!

亚马逊网络服务公司&#xff08;AWS&#xff09;在量子计算的纠错技术领域取得了显著成就&#xff0c;极大地简化了量子系统的复杂性和资源需求。他们的研究人员通过采用“双轨擦除”量子比特&#xff08;dual-rail erasure qubit&#xff09;技术&#xff0c;有效地克服了量子…

Avalonia(11.0.2)+.NET6 打包运行到银河麒麟V10桌面系统

操作系统配置 项目结构 .net版本 这次我们是在银河麒麟V10系统上打包运行Avalonia(11.0.2)+.NET6.0的程序 开始打包 准备Linux下的桌面快捷方式以及图标 调整AvaloniaApplication2.Desktop.csproj的配置项,重点看下图红色线圈出来的部分,里面涉及到了LinuxPath的设置。完整的配…

智能风扇的新篇章:唯创知音WTK6900G语音识别芯片引领行业革新

随着科技浪潮的推进&#xff0c;智能化技术逐渐渗透到生活的每一个角落&#xff0c;家电领域尤为明显。风扇&#xff0c;这一夏日清凉神器&#xff0c;也通过智能化改造&#xff0c;焕发出前所未有的光彩。其中&#xff0c;智能语音控制功能的加入&#xff0c;为风扇的使用带来…

基于python+vue的BBS论坛系统flask-django-nodejs-php

本系统为用户而设计制作BBS论坛系统&#xff0c;旨在实现BBS论坛智能化、现代化管理。本BBS论坛自动化系统的开发和研制的最终目的是将BBS论坛的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利和条件。使BBS论坛系统数字化、…

专为智能设备安全打造 | 基于ACM32 MCU的智能断路器方案

随着我国电网建设的快速发展&#xff0c;数字化变电站成为建设和研究的热点&#xff0c;数字化变电站的核心在于一次设备的智能化与二次设备的网络化&#xff0c;对于断路器这种极其重要的电力一次设备而言&#xff0c;其智能化的实现有十分重要的意义&#xff0c;断路器智能化…