雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

C#對Windows服務(wù)組的啟動與停止操作

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊:

Windows服務(wù)大家都不陌生,Windows服務(wù)組的概念,貌似MS并沒有這個說法。

作為一名軟件開發(fā)者,我們的機器上安裝有各種開發(fā)工具,伴隨著各種相關(guān)服務(wù)。

Visual Studio可以不打開,SqlServer Management Studio可以不打開,但是SqlServer服務(wù)卻默認開啟了。下班后,我的計算機想用于生活、娛樂,不需要數(shù)據(jù)庫服務(wù)這些東西,尤其是在安裝了Oracle數(shù)據(jù)庫后,我感覺機器吃力的很。

每次開機后去依次關(guān)閉服務(wù),或者設(shè)置手動開啟模式,每次工作使用時依次去開啟服務(wù),都是一件很麻煩的事情。因此,我講這些相關(guān)服務(wù)進行打包,打包為一個服務(wù)組的概念,并通過程序來實現(xiàn)服務(wù)的啟動和停止。

這樣我就可以設(shè)置SqlServer、Oracle、Vmware等的服務(wù)為手動開啟,然后在需要的時候選擇打開。

以上廢話為工具編寫背景,也是一個應(yīng)用場景描述,下邊附上代碼。

服務(wù)組的定義,我使用了INI配置文件,一個配置節(jié)為一個服務(wù)器組,配置節(jié)內(nèi)的Key、Value為服務(wù)描述和服務(wù)名稱。

配置內(nèi)容的先后決定了服務(wù)開啟的順序,因此類似Oracle這樣的對于服務(wù)開啟先后順序有要求的,要定義好服務(wù)組內(nèi)的先后順序。

Value值為服務(wù)名稱,服務(wù)名稱并非services.msc查看的名稱欄位的值,右鍵服務(wù),可以看到,顯示的名稱其實是服務(wù)的顯示名稱,這里需要的是服務(wù)名稱。

配置文件如下圖所示

注:INI文件格式:

[Section1]

key1=value1

key2=value2

程序啟動,主窗體加載,獲取配置節(jié),即服務(wù)組。

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


其中的INI服務(wù)類,參考鏈接:C#操作INI文件的輔助類IniHelper

服務(wù)的啟動和停止,需要引入System.ServiceProcess程序集。

啟動服務(wù)組:

if (string.IsNullOrEmpty(cboServiceGroup.Text))
{
 MessageBox.Show("請選擇要操作的服務(wù)組");
 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("服務(wù)啟動失敗\n" + ex.ToString());
   }
  }
 }
 catch (Exception ex)
 {
  MessageBox.Show("不存在服務(wù)" + value);
 }
 // 
}
//
MessageBox.Show("服務(wù)啟動完成");

停止服務(wù)組

if (string.IsNullOrEmpty(cboServiceGroup.Text))
{
 MessageBox.Show("請選擇要操作的服務(wù)組");
 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("服務(wù)停止失敗\n" + ex.ToString());
   }
  }
 }
 catch (Exception ex)
 {
  MessageBox.Show("不存在服務(wù)" + value);
 }
 //

}
//
MessageBox.Show("服務(wù)停止完成");
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。

上一篇:C# 使用 GDI+ 實現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字

欄    目:C#教程

下一篇:C#實現(xiàn)簡單計算器功能

本文標題:C#對Windows服務(wù)組的啟動與停止操作

本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5228.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有