Как узнать, в каком каталоге работает консольное приложение с С#?

Как узнать, в каком каталоге работает консольное приложение с С#?

Ответ 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;