instsrv.exe srvany.exe启动服务

instsrv.exe srvany.exe启动服务1.通过注册表注册服务privatestaticreadonlystringregpath=@”SYSTEM\CurrentControlSet\Services\ConsulClient\Parameters”;///<summary>///通过注册表注册ConsulAgent服务///</summary>///<p…

大家好,又见面了,我是你们的朋友全栈君。

1.通过注册表注册服务
private static readonly string regpath = @"SYSTEM\CurrentControlSet\Services\ConsulClient\Parameters";

/// <summary>
/// 通过注册表注册Consul Agent服务
/// </summary>
/// <param name="consulPath">exe所在文件夹</param>
/// <param name="consulExeLocal">consul.exe,exe物理路径</param>
private static void ConsulClientRegEdit(string consulPath, string consulExeLocal)
{
	try
	{
		LogWriter.ToInfo("[ConsulClientRegEdit]配置注册表开始");

		List<Tuple<string, string, RegistryValueKind>> list = new List<Tuple<string, string, RegistryValueKind>>();
		list.Add(new Tuple<string, string, RegistryValueKind>("AppParameters", "agent -config-file conf", RegistryValueKind.String));
		list.Add(new Tuple<string, string, RegistryValueKind>("Application", consulExeLocal, RegistryValueKind.String));
		list.Add(new Tuple<string, string, RegistryValueKind>("AppDirectory", consulPath, RegistryValueKind.String));
		WinRegistryHelper.Register(Registry.LocalMachine, regpath, list);
		LogWriter.ToInfo("[ConsulClientRegEdit]配置注册表完成");
	}
	catch (Exception ex)
	{
		LogWriter.ToError("[ConsulClientRegEdit]注册表操作失败", ex);
		throw new Exception("[ConsulClientRegEdit]注册表操作失败,请联系管理员!");
	}
}

public class WinRegistryHelper
{
	public static void Register(RegistryKey root, string subkey, List<Tuple<string, string, RegistryValueKind>> list)
	{
		DeleteRegist(root, subkey);
		RegistryKey aimdir = Registry.LocalMachine.CreateSubKey(subkey);
		if (aimdir == null)
			throw new Exception("注册表操作失败");
		foreach (var item in list)
		{
			aimdir.SetValue(item.Item1, item.Item2, item.Item3);
		}
	}
	/// <summary>
	/// 删除注册表中指定的注册表项
	/// </summary>
	/// <param name="name"></param>
	public static void DeleteRegist(RegistryKey root, string subkey)
	{
		RegistryKey myKey = Registry.LocalMachine.OpenSubKey(subkey);
		if (myKey != null)
		root.DeleteSubKeyTree(subkey);
	}
}
2.instsrv.exe srvany.exe启动服务
string consulExeLocal = DefautToolsRelyHelper.Consul + "\\consul.exe";
string srvanyPath = DefautToolsRelyHelper.Srvany + @"\srvany\srvany.exe";
string instsrvPath = DefautToolsRelyHelper.Srvany + @"\srvany\instsrv.exe";
CheckRelyTools(consulExeLocal, srvanyPath, instsrvPath);
//exe程序注册到注册表中的服务中
ConsulClientRegEdit(DefautToolsRelyHelper.Consul, consulExeLocal);
ConsulClientWinServerRigister(srvanyPath, instsrvPath);

/// <summary>
/// 启动服务
/// </summary>
/// <param name="srvanyPath">srvany.exe物理路径</param>
/// <param name="instsrvPath">instsrv.exe物理路径</param>
private static void ConsulClientWinServerRigister(string srvanyPath, string instsrvPath)
{
	LogWriter.ToInfo("[ConsulClientWinServerRigister]使用 srvany注册服务开始");

	ProcessStartInfo psInfo = new ProcessStartInfo();
	psInfo.FileName = "\"" + instsrvPath + "\"";
	psInfo.Arguments = consulServiceName + " " + "\"" + srvanyPath + "\"";

	//设置启动动作,确保以管理员身份运行 
	psInfo.Verb = "runas";
	Process.Start(psInfo);
	LogWriter.ToInfo("[ConsulClientWinServerRigister]使用 srvany注册服务完成");
}

  

转载于:https://www.cnblogs.com/liuqiyun/p/9897455.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141914.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • visual C++ 项目和解决方案的区别

    项目:项目是构成某个程序的全部组件的容器,该程序可能是控制台程序、基于窗口的程序或某种别的程序。程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成。某个项目的所有文件都

    2021年12月24日
  • busybox 安装方法「建议收藏」

    busybox 安装方法「建议收藏」busyboxpro是一个集成了一百多个最常用linux命令和工具的软件,集成了一个http服务器和一个telnet服务器,Android系统中自带的toolbox工具(/system/bin)比较简单,对于一些命令如find等支持的不好,可以Android系统中加入busybox,就可以使用常见的Linux命令,同时通过busybox可以定制Android的根文件系统。  首先,先把手

    2022年7月25日
  • 视频直播技术详解之直播云SDK性能测试模型[通俗易懂]

    视频直播技术详解之直播云SDK性能测试模型[通俗易懂]声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载。作者:七牛云责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。七牛云于6月底发布了一个针对视频直播的实时流网络LiveNet和完…

    2022年7月21日
  • 几种将网站设为首页的代码是_网页设计基本代码

    几种将网站设为首页的代码是_网页设计基本代码加入收藏夹,设为首页代码把以下代码加入相应位置:加入收藏设为首页鼠标指向时提示设为首页将下列代码插入区中:设为首页打开页面时自动弹出窗口询问是否设为首页将以下代码放在之间:functionmyhomepage(){this.homepage.style.behavior=’url(#default#homepage)’;this.homepag

    2022年10月30日
  • java怎么输入字符串和一行字符串

    java怎么输入字符串和一行字符串1输入字符串遇到空格或者换行结束Scannersc=newScanner(System.in);Stringstr=newString();str=sc.next();2输入一行字符串,可以包括空格Scannersc=newScanner(System.in);Stringstr=newString();str=sc.nextLine();

    2022年7月16日
  • java实现MD5加密的三种方式「建议收藏」

    java实现MD5加密的三种方式「建议收藏」方法一:推荐使用所需jar包:commons-codec.jarimportorg.apache.commons.codec.digest.DigestUtils;/***MD5加密之方法一*@explain借助apache工具类DigestUtils实现*@paramstr*待加密字符串*@return16进制加密字符串*/publicstaticStringencryptToMD5(Stringstr){ return

    2022年7月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号