c# windows服务如何获取自己的安装路径

由于windows服务安装时,系统会自动将windows服务的程序文件复制到系统目录下,通常是System32目录下,windows服务的运行目录就是系统目录,有时候,windows服务在运行时需要知道自己的安装目录,比如,windows服务运行时所需要的一些资源文件,通常可能是一些声音或图像文件,这些资源文件是位于安装目录下的,只有windows服务知道了安装目录,才能对这些资源文件进行访问,那么windows服务如何知道自己的安装目录的信息呢,一种比较简单的做法是通过访问注册表。

windows服务在安装后,会在系统注册表中进行记录,以上面提到的MazeServer为例,通过运行注册表编辑器(regedit)可以找到如下键值:

/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MazeServer

其中那个ImagePath的项的值就是我们需要得到的信息。

由此,我们可以知道,只要我们能够从系统注册表中找到对应的键读取ImagePath的项就可以得到安装路径信息。提供如下类供参考。

Windows服务的安装路径

在Windows服务中需要获得当前服务所在的路径时,不能简单的使用Environment.CurrentDirectory来获得当前路径,因为windows服务所启动的目录都是在c:/windows/system32。如果在你的服务中需要检测某个配置文件时,你无法获得这个配置文件的路径。这时有2种解决方案:

一、就是将你的配置文件安装在system32目录下

二、在你的服务中通过注册表来获得这个服务的安装路径

/*

  Windows服务在系统安装后会在注册表的 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[ServiceName]"下以服务的ServiceName建1个目录,目录中会有"ImagePath"节,这里保存的就是该服务的安装路径。

*/

using Microsoft.Win32;

using System.IO;

/// <summary>

/// 获取服务安装路径

/// </summary>

/// <param name="ServiceName"></param>

/// <returns></returns>

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

}

时间: 2024-10-28 16:44:40

c# windows服务如何获取自己的安装路径的相关文章

以windows服务方式快速部署免安装版Postgres数据库

目录 以windows服务方式快速部署免安装版Postgres数据库 1.下载Postgresql数据库免安装包 2.安装环境准备及验证 解压文件 测试环境依赖 3.创建并初始化数据目录 创建数据目录 初始化数据目录 5.配置postgres数据库 打开并修改postgresql.conf 打开并修改pg_hba.conf 4.安装服务 6.创建用户.数据库 连接数据库 创建用户.数据库 以windows服务方式快速部署免安装版Postgres数据库 1.下载Postgresql数据库免安装包

【VBA】获取Excle的安装路径

在VBA中,如何获取Excle的安装路径呢?请看以下代码: Sub 获取Excle的安装路径() MsgBox "Excle的安装路径为:" & Application.Path End Sub 点击运行程序后,执行结果如下: 点击下载附件

使用NSIS获取AutoCAD的安装路径

NSIS是个十分好用的打包工具,工作中常用到AutoCAD软件,出于某些原因,我需要使用NSIS来获取AutoCAD的安装路径. 经过对注册表的一番查看,写出代码如下: #可自行扩展,比如需要安装AutoCAD字体时,需要找到AutoCAD的安装路径等 Page instfiles ShowInstDetails show Var regCount Var subCount Var regKeyName Var subKeyName Var acadLocation Section SetReg

Windows服务的基本配置和安装

使用windows服务:1.新建项目--Windows服务2.在Service.cs编写程序3.配置:3.1.切换到设计视图,选择添加安装程序3.2.切换到安装程序ProjectInstaller.cs设计视图,右击serviceProcessInstaller组件,选择属性,设置Account属性为LocalSystem3.3.基本配置还有服务的一些相关属性(服务名称.说明.状态等),在Service.cs的设计视图属性中进行相关设置,这个不详细解说,自行探究.4.安装:4.1.使用系统自带的

windows和linux下查看java安装路径

windows下查看版本:(默认安装路径安装就不需要去配环境变量了) 1 java -version windows下查看安装路径: 1 java -verbose Linux下安装版本查看方式和windows下一样,至于安装路径,如图所示: 原文地址:https://www.cnblogs.com/wangyi0419/p/11581898.html

C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)

步骤: 1.运行--〉cmd:打开cmd命令框 2.在命令行里定位到InstallUtil.exe所在的位置 InstallUtil.exe 默认的安装位置是在C:/Windows/Microsoft.NET/Framework/v2.0.50727里面,所以你要在cmd里通过cd定位到该位置(cd C:/Windows/Microsoft.NET/Framework/v2.0.50727) 3.操作命令: 1). 安装服务命令:在命令行里输入下面的命令: InstallUtil.exe  Pa

Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务

说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能被访问,注册成windows服务自动启动更安全可靠. 目录 操作系统:Windows Server 2008 R2 Enterprise VM1:192.168.220.103 管理节点(MGM), VM2:192.168.220.104数据节点(NDBD1),SQL节点(SQL1) VM3:192

windows服务,安装、启动、停止,配置,一个批处理文件搞定

相对而言,还是比较通用的吧,如果哪位仁兄有更好的实现方式,或者发现有不足之处,还请多多指教. @echo off echo.-------------------------------------------------- echo.---- 技术支持:CC          -------- echo.---- 今天是%date%  -------- echo.-------------------------------------------------- echo.正在检测服务是否已经

(转)为C# Windows服务添加安装程序

本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈 哈,扯远了,今天讲一下那个怎么给Windows服务做个安装包.为什么做安装包?当然是方便了,不用每次调用InstallUtil,还有,就是看上去 正规些. 不多说了,先来看看怎么做吧.首先,当然是创建一个Windows服务的项目.这个大家应该都知道怎么做(这都不明白的留