Служба Windows - получить текущий каталог

У меня есть служба Windows, которая должна искать файл конфигурации в своем текущем каталоге.

Поэтому я использую directory.getcurrentdirectiry(), но вместо каталога службы я возвращаюсь

c:\windows\system32

Любая идея, почему и как мне получить служебную директорию?

Ответ 1

Не используйте Directory.GetCurrentDirectory(). У меня была такая же проблема с возвратом C:\Windows\System32. Используйте это вместо:

Path.GetDirectoryName(Application.ExecutablePath);

Ответ 2

Вы можете установить текущий каталог в каталог, в котором работает ваша служба, включив эту строку в свой код:

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

Важная часть этого:

System.AppDomain.CurrentDomain.BaseDirectory

Это возвращает путь к каталогу, из которого выполняется ваша служба.

Ответ 3

Попробуйте следующее:

System.Reflection.Assembly.GetEntryAssembly().Location

Ответ 4

Получение каталога из полного пути:

var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);

довольно глупая проблема по сравнению с написанием службы Windows:)

Ответ 5

string applicationDir = AppDomain.CurrentDomain.BaseDirectory;