Как узнать, в каком каталоге работает консольное приложение с С#?
Как узнать, в каком каталоге работает консольное приложение с С#?
Ответ 1
Чтобы получить каталог, в котором находится файл .exe:
AppDomain.CurrentDomain.BaseDirectory
Чтобы получить текущий каталог:
Environment.CurrentDirectory
Ответ 2
В зависимости от прав, предоставляемых вашему приложению, действует ли теневое копирование или нет, а также другие параметры вызова и развертывания, могут работать разные методы или дать разные результаты, поэтому вам придется выбирать свое оружие с умом. Было сказано, что, все последующие будут давать тот же результат для полностью доверенного консольного приложения, которое выполняется локально на машине, на которой он находится:
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );
Вам нужно будет ознакомиться с документацией указанных выше членов, чтобы узнать, какие именно разрешения необходимы.
Ответ 3
Path.GetDirectoryName(Assembly.GetExecutingAssembly(). Location)
Ответ 4
В .NET вы можете использовать System.Environment.CurrentDirectory
, чтобы получить каталог, из которого был запущен процесс. System.Reflection.Assembly.GetExecutingAssembly().Location
сообщит вам о местонахождении выполняющейся в данный момент сборки (что интересно только в том случае, если загружаемая в данный момент сборка загружена из другого места, отличного от местоположения сборки, где начался процесс).
Ответ 5
В окнах (не уверен в Unix и т.д.) это первый аргумент в командной строке.
В C/С++ firts item в argv *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
Ответ 6
Application.StartUpPath;