Получение полного пути для службы Windows - PullRequest
57 голосов
/ 14 октября 2008

Как узнать папку, в которую динамически устанавливается файл .exe службы Windows?

Path.GetFullPath(relativePath);

возвращает путь на основе каталога C:\WINDOWS\system32.

Однако метод XmlDocument.Load(string filename) работает против относительного пути внутри каталога, в который установлен файл .exe службы.

Ответы [ 7 ]

82 голосов
/ 14 октября 2008

Попробуйте

System.Reflection.Assembly.GetEntryAssembly().Location
65 голосов
/ 30 октября 2012

Попробуйте это:

AppDomain.CurrentDomain.BaseDirectory

(Точно так же, как здесь: Как найти exe-путь службы Windows )

38 голосов
/ 14 ноября 2008
Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
5 голосов
/ 14 октября 2008

Другая версия выше:

string path = Assembly.GetExecutingAssembly().Location;
FileInfo fileInfo = new FileInfo(path);
string dir = fileInfo.DirectoryName;
5 голосов
/ 14 октября 2008

Это работает для нашей службы Windows:

//CommandLine without the first and last two characters
//Path.GetDirectory seems to have some difficulties with these (special chars maybe?)
string cmdLine = Environment.CommandLine.Remove(Environment.CommandLine.Length - 2, 2).Remove(0, 1);
string workDir = Path.GetDirectoryName(cmdLine);  

Это должно дать вам абсолютный путь к исполняемому файлу.

3 голосов
/ 12 июня 2010

Environment.CurrentDirectory возвращает текущий каталог, в котором запущена программа. В случае службы Windows возвращает путь% WINDIR% / system32, в котором будет выполняться исполняемый файл, а не где развернутый исполняемый файл.

0 голосов
/ 14 октября 2008

Это должно дать вам путь, в котором находится исполняемый файл:

Environment.CurrentDirectory;

Если нет, вы можете попробовать:

Directory.GetParent(Assembly.GetEntryAssembly().Location).FullName

Более хакерский, но функциональный способ:

Path.GetFullPath("a").TrimEnd('a')

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...