怎样获取Windws服务的安装路径

aierda 2019-11-18 03:51:32

我在我的PC机上安装 了一个名字“MyWindowsService”的Windows服务,我可否通过
代码获取这个服务的执行文件地址呢?
通过ServiceController只能获取服务的名称、状态,并未发现有执行路径、服务描述等属性
。请教各位有没有解决的办法,期待,谢谢!。。。
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2019-11-19
  • 打赏
  • 举报
回复
可以从注册表读取,类似这样

public static string GetWindowsServiceInstallPath(string ServiceName)
        {
            string key = @"SYSTEM\CurrentControlSet\Services\" + ServiceName;
            string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
            path = path.Replace("\"", string.Empty);

            FileInfo fi = new FileInfo(path);
            return fi.Directory.ToString();

}
aierda 2019-11-19
  • 打赏
  • 举报
回复
感谢各位的指点,使用ManagementObjectSearcher或访问注册表都是可以的。
by_封爱 版主 2019-11-19
  • 打赏
  • 举报
回复
引用 5 楼 兔子家族-二哥 的回复:
你瞅瞅一个斑竹,尽挂些莫名其妙的徽章,不能学学人家挂点小红花小黄花之类的嘛,快告诉我咋弄的?
打扰了...我以为是在当前程序的代码里获取服务的安装路径....
  • 打赏
  • 举报
回复
引用 3 楼 by_封爱 的回复:

System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase


甚至是


System.Windows.Forms.Application.StartupPath


不要跟我说 .我这是服务不是exe..


你瞅瞅一个斑竹,尽挂些莫名其妙的徽章,不能学学人家挂点小红花小黄花之类的嘛,快告诉我咋弄的?
by_封爱 版主 2019-11-18
  • 打赏
  • 举报
回复

System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
甚至是

System.Windows.Forms.Application.StartupPath
不要跟我说 .我这是服务不是exe..
github_36000833 2019-11-18
  • 打赏
  • 举报
回复
可以用wmi来获取执行路径:
static void Main()
{
    using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Service where name='MyWindowsService'"))
    using (var services = searcher.Get())
    {
        foreach (var s in services)
        {
            Console.WriteLine(s["DisplayName"] + ": " +s["PathName"]);
        }
    }
}
ying1234 2019-11-18
  • 打赏
  • 举报
回复
string strAssemblyFilePath = Assembly.GetExecutingAssembly().Location;
string exepath = Path.GetDirectoryName(strAssemblyFilePath) + "\\aa.exe";

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧