zoukankan      html  css  js  c++  java
  • 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();
    }




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

  • 相关阅读:
    Typescript中抽象类与接口详细对比与应用场景介绍
    html5手势操作与多指操作封装与Canvas图片裁切实战
    可编辑DIV与移动端软键盘兼容性问题汇总
    作业系统前端架构总结
    移动端滑屏全应用【四】移动端动画贞动画函数mTween封装
    移动端滑屏全应用【三】requestAnimationFrame的兼容与使用
    python2.7和python3.7的区别!
    通俗易懂地解释卷积
    傅里叶变换就是这么简单!
    大话傅里叶变换,通俗易懂!
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4732391.html
Copyright © 2011-2022 走看看