C#对Windows服务组的启动与停止操作

Windows服务大家都不陌生,Windows服务组的概念,貌似MS并没有这个说法。

作为一名软件开发者,我们的机器上安装有各种开发工具,伴随着各种相关服务。

Visual Studio可以不打开,SqlServer Management Studio可以不打开,但是SqlServer服务却默认开启了。下班后,我的计算机想用于生活、娱乐,不需要数据库服务这些东西,尤其是在安装了Oracle数据库后,我感觉机器吃力的很。

每次开机后去依次关闭服务,或者设置手动开启模式,每次工作使用时依次去开启服务,都是一件很麻烦的事情。因此,我讲这些相关服务进行打包,打包为一个服务组的概念,并通过程序来实现服务的启动和停止。

这样我就可以设置SqlServer、Oracle、Vmware等的服务为手动开启,然后在需要的时候选择打开。

以上废话为工具编写背景,也是一个应用场景描述,下边附上代码。

服务组的定义,我使用了INI配置文件,一个配置节为一个服务器组,配置节内的Key、Value为服务描述和服务名称。

配置内容的先后决定了服务开启的顺序,因此类似Oracle这样的对于服务开启先后顺序有要求的,要定义好服务组内的先后顺序。

Value值为服务名称,服务名称并非services.msc查看的名称栏位的值,右键服务,可以看到,显示的名称其实是服务的显示名称,这里需要的是服务名称。

配置文件如下图所示

注:INI文件格式:

[Section1]

key1=value1

key2=value2

程序启动,主窗体加载,获取配置节,即服务组。

string path = Directory.GetCurrentDirectory() + "/config.ini";
 List<string> serviceGroups = INIHelper.GetAllSectionNames(path);
 cboServiceGroup.DataSource = serviceGroups;

其中的INI服务类,参考链接:C#操作INI文件的辅助类IniHelper

服务的启动和停止,需要引入System.ServiceProcess程序集。

启动服务组:

if (string.IsNullOrEmpty(cboServiceGroup.Text))
{
 MessageBox.Show("请选择要操作的服务组");
 return;
}
//
string path = Directory.GetCurrentDirectory() + "/config.ini";
string section = cboServiceGroup.Text;
string[] keys;
string[] values;
INIHelper.GetAllKeyValues(section, out keys, out values, path);
//
foreach (string value in values)
{
 ServiceController sc = new ServiceController(value);
 //
 try
 {
  ServiceControllerStatus scs = sc.Status;
  if (scs != ServiceControllerStatus.Running)
  {
   try
   {
    sc.Start();
   }
   catch (Exception ex)
   {
    MessageBox.Show("服务启动失败\n" + ex.ToString());
   }
  }
 }
 catch (Exception ex)
 {
  MessageBox.Show("不存在服务" + value);
 }
 //
}
//
MessageBox.Show("服务启动完成");

停止服务组

if (string.IsNullOrEmpty(cboServiceGroup.Text))
{
 MessageBox.Show("请选择要操作的服务组");
 return;
}
//
string path = Directory.GetCurrentDirectory() + "/config.ini";
string section = cboServiceGroup.Text;
string[] keys;
string[] values;
INIHelper.GetAllKeyValues(section, out keys, out values, path);
//
foreach (string value in values)
{
 ServiceController sc = new ServiceController(value);
 try
 {
  ServiceControllerStatus scs = sc.Status;
  if (scs != ServiceControllerStatus.Stopped)
  {
   try
   {
    sc.Stop();
   }
   catch (Exception ex)
   {
    MessageBox.Show("服务停止失败\n" + ex.ToString());
   }
  }
 }
 catch (Exception ex)
 {
  MessageBox.Show("不存在服务" + value);
 }
 //

}
//
MessageBox.Show("服务停止完成");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • C# WindowsForm程序同时启动多个窗口类
  • C#通过创建Windows服务启动程序的方法详解
  • 简单掌握Windows中C#启动外部程序进程的方法
  • 基于C#实现Windows服务状态启动和停止服务的方法
  • C#启动和停止windows服务的实例代码
  • C#启动windows服务方法的相关问题分析
(0)

相关推荐

  • C#启动和停止windows服务的实例代码

    复制代码 代码如下: <script type="text/javascript">        function showLoading(desc) {            $("body").append("<div id=\"processingdiv\" style=\"display:none;\"><div class=\"popup\"> &l

  • 简单掌握Windows中C#启动外部程序进程的方法

    许多用户在程序开发过程中需要使用C#启动一个外部程序(进程),在使用完毕该外部程序后,又希望能将其关闭.我们特在此对C#启动和关闭外部进程的方法进行一个简单的介绍. C#启动外部程序(进程)有两种方法:一种是直接使用C#提供的Process类,利用类的函数操作来直接启动外部程序:另一种方法是使用传统的Win32 API函数CreateProcess来实现外部进程的启动. 使用C#提供的Process类来启动外部程序方法比较简单,例举代码如下: using System.Diagnostics;

  • C#通过创建Windows服务启动程序的方法详解

    本文实例讲述了C#通过创建Windows服务启动程序的方法.分享给大家供大家参考,具体如下: 1. 新建一个Windows服务应用程序 创建项目-->Visual C# 左侧的"+"-->Windows -->Windows 服务(右侧模板)-->输入名称,确定创建项目 2. 设置Windows服务的属性(Windows服务里没有窗体,所以点击左侧设计器里空白的地方即可在右侧属性栏里看到属性) 这里属性是控制服务器是否可以停止,暂停,继续等等的操作.根据需要选择

  • C#启动windows服务方法的相关问题分析

    C#启动windows服务的方法都是什么呢?C#启动服务类型为Disabled的windows服务会遇到什么样的问题呢?那么本文就向你介绍C#启动windows服务的方法的相关内容. C#启动windows服务的方法是什么呢?来让我们开始吧: C#启动windows服务的由来:我们知道, 在C#代码中启动一个已经存在的windows服务,我们可以用这样的代码来完成: 复制代码 代码如下: //ACPI is an example of service name System.ServicePro

  • C# WindowsForm程序同时启动多个窗口类

    C# WindowsForm程序同时启动多个窗口类,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MVCProject { /// <summary> /// 多窗口同时启动类 /// <remarks>继承A

  • 基于C#实现Windows服务状态启动和停止服务的方法

    本文以实例形式展示了基于C#实现Windows服务状态启动和停止服务的方法.非常实用.分享给大家供大家参考之用.具体方法如下: 首先先引用: System.ServiceProcess.dll 然后在引用命名空间: using System.ServiceProcess; 建立服务对象: ServiceController sc = new ServiceController("Server"); 服务运行则停止服务: if (sc.Status.Equals(ServiceContr

  • C#对Windows服务组的启动与停止操作

    Windows服务大家都不陌生,Windows服务组的概念,貌似MS并没有这个说法. 作为一名软件开发者,我们的机器上安装有各种开发工具,伴随着各种相关服务. Visual Studio可以不打开,SqlServer Management Studio可以不打开,但是SqlServer服务却默认开启了.下班后,我的计算机想用于生活.娱乐,不需要数据库服务这些东西,尤其是在安装了Oracle数据库后,我感觉机器吃力的很. 每次开机后去依次关闭服务,或者设置手动开启模式,每次工作使用时依次去开启服务

  • postgresql 启动与停止操作

    启动和停止数据库服务器 service 方式 service postgresql-10 start service postgresql-10 stop service postgresql-10 status pg_ctl 方式 pg_ctl start -D [ data 所在路径 ] pg_ctl stop -D [ data 所在路径 ] 三种形式:-m 指定模式 smart 模式:会等待活动的事务提交结束,并等待客户端主动断开连接之后关闭数据库服务 fast 模式:会回滚所有的活动的

  • golang 后台进程的启动和停止操作

    启动命令 我们先来个非后台运行的启动命令 func init() { startCmd := &cobra.Command{ Use: "start", Short: "Start Gonne", Run: func(cmd *cobra.Command, args []string) { startHttp() }, } startCmd.Flags().BoolVarP(&daemon, "deamon", "d&q

  • 使用批处理实现启动和停止服务的代码分析(net start&net stop)

    使用windows自带的net.exe功能启动或停止服务 启动/停止 服务的命令行格式为: net start / stop服务名称 (注意:服务先要设置为手动启动类型) 例子: 以启动和停止Oracle11g服务为例(ORCL是数据库名 ): 复制代码 代码如下: %启动Oracle的服务% @echo.服务启动...... @echo off net start OracleVssWriterORCL net start OracleDBConsoleorcl net start Oracl

  • Mysql服务器的启动与停止(一)

    在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器.服务器可以手动或自动启动.如果你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动服务器,它用paul运行:如果你用su命令切换到root,然后运启动服务器,则它以root运行.然而,大多数情况下你可能不想手动启动服务器,最有可能是你安排MySQL服务器在系统引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导过程由系统的Unix用户root执行,

  • Windows下MySQL服务无法停止和删除的解决办法

    我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL.这是安装的具体方法:点击这里.在执行如下命令: mysqld --install MySQL --defaults-file=[ini配置文件绝对路径] 在执行上面那个命令的时候,输入了错误的配置文件路径.虽然系统可能会返回 success .并且命令 mysqld --initialize 也可以执行并生成数据文件.但是当我执行 net start mysql 的时候,系统会一直提示服务正在启动.原因是我的配置文件路径错误

  • 利用systemctl管理Tomcat启动、停止、重启及开机启动详解

    前言 本文主要给大家介绍了关于systemctl管理Tomcat启动.停止.重启及开机启动的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1. 创建服务 用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止,在systemctl中,也类似,文件目录有所不同,在/lib/systemd/system目录下创建一个脚本文件tomcat,里面的内容如下: [Unit] Description=Tomcat After

  • C#实现进程管理的启动和停止实例

    本文实例讲述了C#实现进程管理的启动和停止方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; //引用命名空间 using System.D

  • Windows中Mysql启动失败的完美解决方案

    目录 一.问题描述 1.1.mysql服务启动失败1 1.2.mysql服务启动失败2 二.针对一的解决办法 2.1.问题解析 2.2.解决办法 2.2.1.存在数据的情况 三.数据恢复 3.1.mysql数据恢复 [Mysql问题]Windows中Mysql启动失败与数据恢复 一.问题描述 1.1.mysql服务启动失败1 使用命令启动:net start mysql 结果如下: 在windows计算机管理->服务->MySQL57强制启动,结果如下: 1.2.mysql服务启动失败2 通过

随机推荐