zoukankan      html  css  js  c++  java
  • 将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
    
    ";
                content += "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    ";
                content += "$config = @'
    ";
                content += "<service>
    ";
                content += $" <id>{textBox1.Text}</id>
    ";
                content += $" <name>{textBox1.Text}</name>
    ";
                content += " <description>MinIO server is a nb oss server</description>
    ";
                content += " <executable>minio.exe</executable>
    ";
                content += $@" <env name=""MINIO_ACCESS_KEY"" value=""{textBox5.Text}"" />" + "
    ";
                content += $@" <env name=""MINIO_SECRET_KEY"" value =""{textBox4.Text}"" />" + "
    ";
                content += $@" <arguments>server --address 0.0.0.0:{textBox2.Text} {textBox3.Text}</arguments>" + "
    ";
                content += @" <logmode>rotate</logmode>" + "
    ";
                content += @" </service>" + "
    ";
                content += @"'@" + "
    
    ";
                content += @"Set-Content ""minio-service.xml"" $config" + "
    ";
                content += @"Start-Process -WorkingDirectory $PSScriptRoot -FilePath ""$($PSScriptRoot)minio-service.exe"" -ArgumentList ""install"" -NoNewWindow -PassThru -Wait" + "
    ";
                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();
                        }
                    }
                }
            }
        }
    }
    
    

    软件截图:
    png

  • 相关阅读:
    Spring+mybatis+struts框架整合的配置具体解释
    JavaScript 基础
    MySQL高可用系列之MHA(二)
    设计模式之备忘录模式
    客户管理系统之模块设计(七)
    CURL库的宏定义列表
    servlet调用的几种方式
    modprobe kvm-intel
    sql server 2008 R2 配置开启远程访问
    error: could not find library containing RSA_new
  • 原文地址:https://www.cnblogs.com/dongteng/p/13955178.html
Copyright © 2011-2022 走看看