利用c# 如何实现将Minio.exe注册成windows服务

发布时间:2020-11-16 15:52:35 作者:Leah
来源:亿速云 阅读:205

这期内容当中小编将会给大家带来有关利用c# 如何实现将Minio.exe注册成windows服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

minio 注册成windows 服务的工具开发

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
  public partial class Main : Form
  {
    public Main()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // 注册服务
      var script= this.CreateXmlContent();

      try
      {
        using (Runspace runspace = RunspaceFactory.CreateRunspace())
        {
          runspace.Open();
          PowerShell ps = PowerShell.Create();
          ps.Runspace = runspace;
          ps.AddScript(script);
          ps.Invoke();
        }

        Thread.Sleep(2000);
        // 启动服务
        StartService();

        MessageBox.Show(@"服务启动成功");
      }
      catch (Exception ex)
      {
        MessageBox.Show(@"注册失败");
      }
    }

    private string CreateXmlContent()
    {
      var filePath = Path.Combine(Directory.GetCurrentDirectory(), "minio-service.ps1");
      if (!File.Exists(filePath))
      {
        File.Create(filePath).Close();
      }

      var content =
        "if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] \"Administrator\")) { Start-Process powershell.exe \"-NoProfile -ExecutionPolicy Bypass -File `\"$PSCommandPath`\"\" -Verb RunAs; exit }";
      content += "Set-Location -Path $PSScriptRoot\r\n\r\n";
      content += "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\r\n";
      content += "$config = @'\r\n";
      content += "<service>\r\n";
      content += $" <id>{textBox1.Text}</id>\r\n";
      content += $" <name>{textBox1.Text}</name>\r\n";
      content += " <description>MinIO server is a nb oss server</description>\r\n";
      content += " <executable>minio.exe</executable>\r\n";
      content += $@" <env name=""MINIO_ACCESS_KEY"" value=""{textBox5.Text}"" />" + "\r\n";
      content += $@" <env name=""MINIO_SECRET_KEY"" value =""{textBox4.Text}"" />" + "\r\n";
      content += $@" <arguments>server --address 0.0.0.0:{textBox2.Text} {textBox3.Text}</arguments>" + "\r\n";
      content += @" <logmode>rotate</logmode>" + "\r\n";
      content += @" </service>" + "\r\n";
      content += @"'@" + "\r\n\r\n";
      content += @"Set-Content ""minio-service.xml"" $config" + "\r\n";
      content += @"Start-Process -WorkingDirectory $PSScriptRoot -FilePath ""$($PSScriptRoot)\minio-service.exe"" -ArgumentList ""install"" -NoNewWindow -PassThru -Wait" + "\r\n";
      content += @"Write-Host ""Installation done""";

      File.WriteAllText(filePath, content, Encoding.Default);

      return filePath;
    }

    private void Main_Load(object sender, EventArgs e)
    {
      textBox3.Text = Path.Combine(Directory.GetCurrentDirectory(), "minio");
      // 获取资源
      var minio_service = MinioTool.Properties.Resources.minio_service;
      var exePath = Path.Combine(Directory.GetCurrentDirectory(), "minio-service.exe");
      if (!File.Exists(exePath))
      {
        File.Create(exePath).Close();
      }
      File.WriteAllBytes(exePath, minio_service);
    }

    /// <summary>
    /// 启动服务
    /// </summary>
    private void StartService()
    {
      ServiceController[] services = ServiceController.GetServices();
      foreach (ServiceController service in services)
      {
        if (service.ServiceName == textBox1.Text)
        {
          if (service.Status != ServiceControllerStatus.Running)
          {
            service.Start();
          }
        }
      }
    }
  }
}

软件截图:

利用c# 如何实现将Minio.exe注册成windows服务

上述就是小编为大家分享的利用c# 如何实现将Minio.exe注册成windows服务了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. C# Windows服务开发从入门到精通
  2. 如何利用c#实现通用守护进程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

minio.exe windows服务

上一篇:Navicat Premium 15如何实现无限试用脚本

下一篇:如何利用Vue向后台传数组数据并使用springboot接收数据

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》