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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • TextField的高宽autosize[通俗易懂]

    TextField的高宽autosize[通俗易懂]vart_name:TextField=newTextField;trace(t_name.height);trace(t_name.width);这样打印出来的高度都是100PX,是系统默认的。如果不设置可能会让父容器宽高变大,遮挡住别的窗口的鼠标事件。可以简单地使用tf.autoSize=TextFieldAutoSize.LEFT;来解决这样宽高就会根据文本内容大小来…

  • mysql怎么删除默认值_MySQL删除字段

    mysql怎么删除默认值_MySQL删除字段需求:为已有添加字段示例:1.查看先有表结构2.为t_test表添加字段nickname语法:ALTERTABLE表名ADD字段名字段类型ALTERTABLEt_testADDnicknamevarchar(25)COMMENT‘昵称’;3.为t_test表添加字段age,并设置默认值为20ALTERTABLEt_…

  • Linux安装nmtui(nmtui连接wifi)

    Step1yuminstallNetworkManager-tuiStep2systemctlstartNetworkManagerStep3nmtui

  • 如何开发一个webide_怎么让自己简单一点

    如何开发一个webide_怎么让自己简单一点想写C/C++,得下VisualStudio,或者JetBrainsCLion,或者CodeLite……想写Java,得用Eclipse,或者IntelliJIDEA,或者NetBeans……想写python,得安PyCharm,或者Spyder,或者PyDev……正所谓“安装两小时,代码五分钟”最后,好不容易安装好,在配置过程中一不留神误删了某些插件或配置~…

    2022年10月18日
  • glPushMatrix()和glPopmatirx()

    原文地址:http://blog.csdn.net/tyxkzzf/article/details/40907273OpenGL有三个矩阵堆栈,分别是GL_MODELVIEW(模型视图矩阵堆栈)、GL_PROJECTION(投影矩阵堆栈)、GL_TEXTURE(纹理矩阵堆栈),用法和普通堆栈一样;这里我们只讲模型视图矩阵堆栈,OpenGL提供了相应的接口:glPushMatir

  • Python 开发 漏洞的批量搜索与利用.(GlassFish 任意文件读取)「建议收藏」

    Python 开发 漏洞的批量搜索与利用.(GlassFish 任意文件读取)「建议收藏」?Python开发学习的意义:?(1)学习相关安全工具原理.?(2)掌握自定义工具及拓展开发解决实战中无工具或手工麻烦批量化等情况.?(3)在二次开发Bypass,日常任务,批量测试利用等方面均有帮助.

发表回复

您的电子邮箱地址不会被公开。

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