• 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();
    }




    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    开启mysql的远程访问权限
    react生命周期
    代码分析工具-SonarQube的安装及使用
    数据源连接神器-DBeaver
    内网搭建pip镜像源
    MySQL5.6源码包安装
    Oracle11g 离线静默安装并附安装脚本
    如何上手DataX
    RockeMQ集群部署
    Redis集群搭建
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4732391.html
Copyright © 2020-2023  润新知