Ответ 1
Не используйте Directory.GetCurrentDirectory()
. У меня была такая же проблема с возвратом C:\Windows\System32. Используйте это вместо:
Path.GetDirectoryName(Application.ExecutablePath);
У меня есть служба Windows, которая должна искать файл конфигурации в своем текущем каталоге.
Поэтому я использую directory.getcurrentdirectiry()
, но вместо каталога службы я возвращаюсь
c:\windows\system32
Любая идея, почему и как мне получить служебную директорию?
Не используйте Directory.GetCurrentDirectory()
. У меня была такая же проблема с возвратом C:\Windows\System32. Используйте это вместо:
Path.GetDirectoryName(Application.ExecutablePath);
Вы можете установить текущий каталог в каталог, в котором работает ваша служба, включив эту строку в свой код:
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
Важная часть этого:
System.AppDomain.CurrentDomain.BaseDirectory
Это возвращает путь к каталогу, из которого выполняется ваша служба.
Попробуйте следующее:
System.Reflection.Assembly.GetEntryAssembly().Location
Получение каталога из полного пути:
var location = System.Reflection.Assembly.GetEntryAssembly().Location;
var directoryPath = Path.GetDirectoryName(location);
довольно глупая проблема по сравнению с написанием службы Windows:)
string applicationDir = AppDomain.CurrentDomain.BaseDirectory;