C#中级-通过注册表读取Windows Service程序执行路径

一、前言

       假设我们的C#解决方案中有多个程序应用,如:Web应用、控制台程序、WPF程序应用和Windows服务应用。

        那么这些非Windows Service应用程序怎么在代码中找到Windows服务应用的执行路径呢?

 

二、正文

       假设该Windows 服务已经启动,名称叫SocketService。

        Step1: 你要检查本地运行的Windows服务中是否有叫SocketService的服务;

        Step2: 读取注册表,在本地运行的Windows服务都会出现在注册表中,我们通过服务名称找到该注册表信息;

        Step3: 读取注册表信息的ImagePath即可得到该Windows服务的执行路径。

using System.ServiceProcess; //需要添加引用

public
static string GetFilePathFromService(string serviceName) { try { ServiceController[] services = ServiceController.GetServices(); var socketService = services.FirstOrDefault(x => String.Equals(x.ServiceName, "SocketService")); if (socketService != null) { var key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\" + serviceName); if (key != null) { var serviceExePath = GetString(key.GetValue("ImagePath").ToString()); var folderPath = Path.GetDirectoryName(serviceExePath); if (!String.IsNullOrEmpty(folderPath) && Directory.Exists(folderPath)) { return folderPath; } } } } catch(Exception ex) { return null; } return null; }

 

三、结尾

       最近有点忙,Webgl后面三章估计要拖更了。。。尴尬。

转载于:https://www.cnblogs.com/lovecsharp094/p/7899833.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值