• c# service


    https://www.cnblogs.com/cncc/p/7170951.html

    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;
    using System.Collections;
    using System.Windows.Forms;
    using System.ServiceProcess;
    using System.Configuration.Install;

    namespace WindowsServiceClient
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    string serviceFilePath = $"{Application.StartupPath}\Service1.exe";
    string serviceName = "Service1";

    //事件:安装服务


    private void button1_Click(object sender, EventArgs e)
    {
    try
    {
    serviceFilePath = tb_path.Text.ToString().Trim();
    if (serviceFilePath == "")
    {
    MessageBox.Show("请输入服务所在路径!");
    return;
    }
    string[] strs = serviceFilePath.Split('\');
    serviceName = (strs[strs.Length - 1]).Substring(0, strs[strs.Length - 1].Length - 4);
    tb_name.Text = serviceName;
    if (this.IsServiceExisted(serviceName)) this.UninstallService(serviceName);
    this.InstallService(serviceFilePath);
    MessageBox.Show("安装成功!");
    }
    catch (Exception ex)
    {
    MessageBox.Show("安装失败!" + ex.ToString());
    }


    }

    //事件:启动服务
    private void button2_Click(object sender, EventArgs e)
    {
    try
    {
    serviceFilePath = tb_path.Text.ToString().Trim();
    if (serviceFilePath == "")
    {
    MessageBox.Show("请输入服务所在路径!");
    return;
    }
    string[] strs = serviceFilePath.Split('\');
    serviceName = (strs[strs.Length - 1]).Substring(0, strs[strs.Length - 1].Length - 4);
    tb_name.Text = serviceName;
    if (this.IsServiceExisted(serviceName)) this.ServiceStart(serviceName);
    MessageBox.Show("启动成功!");
    }
    catch (Exception ex)
    {
    MessageBox.Show("启动失败!" + ex.ToString());
    }
    }

    //事件:停止服务
    private void button3_Click(object sender, EventArgs e)
    {
    try
    {
    serviceFilePath = tb_path.Text.ToString().Trim();
    if (serviceFilePath == "")
    {
    MessageBox.Show("请输入服务所在路径!");
    return;
    }
    string[] strs = serviceFilePath.Split('\');
    serviceName = (strs[strs.Length - 1]).Substring(0, strs[strs.Length - 1].Length - 4);
    tb_name.Text = serviceName;
    if (this.IsServiceExisted(serviceName)) this.ServiceStop(serviceName);
    MessageBox.Show("停止成功!");
    }
    catch (Exception ex)
    {
    MessageBox.Show("停止失败!" + ex.ToString());
    }
    }

    //事件:卸载服务
    private void button4_Click(object sender, EventArgs e)
    {
    try
    {
    serviceFilePath = tb_path.Text.ToString().Trim();
    if (serviceFilePath == "")
    {
    MessageBox.Show("请输入服务所在路径!");
    return;
    }
    string[] strs = serviceFilePath.Split('\');
    serviceName = (strs[strs.Length - 1]).Substring(0, strs[strs.Length - 1].Length - 4);
    tb_name.Text = serviceName;
    if (this.IsServiceExisted(serviceName))
    {
    this.ServiceStop(serviceName);
    this.UninstallService(serviceFilePath);
    }
    MessageBox.Show("卸载成功!");
    }
    catch (Exception ex)
    {
    MessageBox.Show("卸载失败!" + ex.ToString());
    }
    }

    //判断服务是否存在
    private bool IsServiceExisted(string serviceName)
    {
    ServiceController[] services = ServiceController.GetServices();
    foreach (ServiceController sc in services)
    {
    if (sc.ServiceName.ToLower() == serviceName.ToLower())
    {
    return true;
    }
    }
    return false;
    }

    //安装服务
    private void InstallService(string serviceFilePath)
    {
    using (AssemblyInstaller installer = new AssemblyInstaller())
    {
    installer.UseNewContext = true;
    installer.Path = serviceFilePath;
    IDictionary savedState = new Hashtable();
    installer.Install(savedState);
    installer.Commit(savedState);
    }
    }

    //卸载服务
    private void UninstallService(string serviceFilePath)
    {
    using (AssemblyInstaller installer = new AssemblyInstaller())
    {
    installer.UseNewContext = true;
    installer.Path = serviceFilePath;
    installer.Uninstall(null);
    }
    }

    //启动服务
    private void ServiceStart(string serviceName)
    {
    using (ServiceController control = new ServiceController(serviceName))
    {
    if (control.Status == ServiceControllerStatus.Stopped)
    {
    control.Start();
    }
    }
    }

    //停止服务
    private void ServiceStop(string serviceName)
    {
    using (ServiceController control = new ServiceController(serviceName))
    {
    if (control.Status == ServiceControllerStatus.Running)
    {
    control.Stop();
    }
    }
    }
    }

    }

  • 相关阅读:
    Go-15-flag.String 获取系统参数
    Go-14-解决 go get golang.org/x/text 拉取失败问题
    Go-08-函数与指针
    redis 学习(6)-- 集合类型
    redis 学习(5)-- 列表类型
    redis 学习(4)-- 哈希类型
    redis 学习(3)-- String 类型
    redis 学习(二)-- 通用命令
    redis 学习(1)-- redis 安装与启动
    Mysql 索引原理及优化
  • 原文地址:https://www.cnblogs.com/Apeak/p/14917800.html
Copyright © 2020-2023  润新知