C#使用ServiceController控制windows服务
C#中,使用ServiceController类控制windows服务,使用之前要先添加引用:System.ServiceProcess,然后在命名空间中引用:using System.ServiceProcess。下面举例获取本机的所有已安装的Windows服务和应用,然后查找某一应用活服务是否已经安装。
代码:
-
using System;
-
using System.Collections.Generic;
-
using System.ComponentModel;
-
using System.Data;
-
using System.Drawing;
-
using System.Linq;
-
using System.Text;
-
using System.Windows.Forms;
-
using System.ServiceProcess;
-
namespace 判断机器中是否安装了某项服务或者应用
-
{
-
public partial class Form1 : Form
-
{
-
public Form1()
-
{
-
InitializeComponent();
-
}
-
ServiceController[] Services = ServiceController.GetServices();
-
private bool ExistSth()
-
{
-
bool exist = false;
-
for (int i = 0; i < Services.Length; i++)
-
{
-
if (Services[i].DisplayName.ToString() == textBox1.Text.Trim())
-
exist = true;
-
}
-
return exist;
-
}
-
private void button1_Click(object sender, EventArgs e)
-
{
-
if (ExistSth())
-
MessageBox.Show("已安装");
-
else
-
MessageBox.Show("未安装");
-
}
-
private void Form1_Load(object sender, EventArgs e)
-
{
-
for (int i = 0; i < Services.Length; i++)
-
listBox1.Items.Add(Services[i].DisplayName.ToString());
-
}
-
}
-
}
假设某一服务名为ServicesName, 编写开始服务,停止服务,重启服务的代码如下:
-
private ServiceController _controller;
-
private void StopService()
-
{
-
this._controller = new ServiceController("ServicesName");
-
this._controller.Stop();
-
this._controller.WaitForStatus(ServiceControllerStatus.Stopped);
-
this._controller.Close();
-
}
-
private void StartService()
-
{
-
this._controller = new ServiceController("ServicesName");
-
this._controller.Start();
-
this._controller.WaitForStatus(ServiceControllerStatus.Running);
-
this._controller.Close();
-
}
-
private void ResetService()
-
{
-
this._controller = new ServiceController("ServicesName");
-
this._controller.Stop();
-
this._controller.WaitForStatus(ServiceControllerStatus.Stopped);
-
this._controller.Start();
-
this._controller.WaitForStatus(ServiceControllerStatus.Running);
-
this._controller.Close();
-
}