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

软件截图:

(0)

相关推荐

  • 备份和还原Windows DHCP服务器

    在本教程中,您将学习如何使用DHCP控制台和PowerShell备份和还原Windows DHCP服务器. 您是否曾经经历过DHCP服务器崩溃或故障?在设备开始重新启动之前,一切都会平静. 用户将抱怨 ...

  • cmd安装Chocolatey/choco

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/cmd安装Chocolatey/choco 作者:融水公子 rsgz chocolatey教程 chocolatey教程 http://www.r ...

  • 干货|windows提权速查流程 收藏备用

    干货|windows提权速查流程 收藏备用

  • 一条命令获取 IE 浏览器保存网站的账号和密码信息

    渗透攻击红队 一个专注于红队攻击的公众号 大家好,这里是 渗透攻击红队 的第 41 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更 Powershell 内网渗透一直 ...

  • Windows - 快速查找提权EXP

    渗透攻击红队 一个专注于红队攻击的公众号 大家好,这里是 渗透攻击红队 的第 22 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更 Windows 权限简介 在Win ...

  • 鼠标键盘成黑客工具!雷蛇外设惊现零日漏洞(附POC视频)

    文章来源:红数位 Razer雷蛇是一家非常受全球游戏玩家欢迎的计算机外围设备制造商,以其游戏鼠标和键盘而闻名.目前一个Razer Synapse雷蛇云驱动零日漏洞已在推特上被披露,您只需插入雷蛇鼠标或 ...

  • 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

    一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署. 程序: netcore 2.0,操作系统: windows server 2012,坑爹的事情就来了, net ...

  • C#使用Topshelf创建Windows服务

    一.项目创建 创建一个控制台应用程序,项目右键->管理 NuGet 程序包->Topshelft及Topshelf.Log4Net. 二.Topshelf配置 一般来说,服务都会设置每隔多 ...

  • 重庆园区,核定征收注册注销一站式服务

    核定征收对于企业来说肯定不陌生,我相信很多企业都使用过核定征收,现在重庆园区核定征收专门针对一些服务型企业,生物科技,网络科技,广告,影视传媒,高收入人群等,都可以享受核定征收政策,能有效的为企业解决 ...

  • 未能连接一个 Windows服务,桌面文件都没了

    有人电脑桌面进去了,但是桌面内容都没有了,只有简单几个文件,大部分都不在了,但是在我的电脑-C盘-用户-桌面里面还有, 未能连接一个 Windows服务 Windows无法连接到System E ve ...

  • 注册公司比注册成个体户好太多了,大多数人不知道这些好处!

    最近很多小伙伴反映收不到我们的推送,为了让咱们不再错过,请大家星标我们,看完文多多敲击[点赞.在看]! 税台 税务智能工作平台!查法规.找答疑.管发票助手.算税负,都在这里!1篇原创内容公众号通过对比 ...

  • 图文详解苹果电脑如何切换成windows系统-系统城

    苹果电脑默认安装的是Mac系统,有的人很喜欢,有一部分人却怎么都用不习惯,觉得windows系统用起来比较顺手.为了能提高办公效率,给苹果电脑安装双系统,那么有什么办法能将苹果电脑切换成windows ...

  • 一、dubbo的注册中心以及服务注册源码剖析

    一.整体设计 dubbo整体设计以及调用用链路参照官网http://dubbo.apache.org/zh-cn/docs/dev/design.html 二.dubbo的注册中心 1.注册中心参照官 ...

  • 如何把单体式应用拆解成微服务?【下】

    热评博文:<如何设计出优美的Web API?>,现阅读量超 2300,小伙伴们不要错过哦! 紧接昨天的上篇<如何把单体式应用拆解成微服务?[上]>,今天我们一起来看看具体的拆解 ...

  • 如何把单体式应用拆解成微服务?【上】

    微服务是当下最流行的应用架构技术了,它跟容器服务.DevOps合称云时代的三剑客,可以帮我们化解业务发展过快导致的产品迭代压力,让我们可以自由选择最适合团队的技术栈,让系统能够承载互联网海量用户的访问 ...