Как я могу получить имя текущего исполняемого файла в C #? - PullRequest
321 голосов
/ 06 марта 2009

Я хочу получить имя запущенной в данный момент программы, то есть имя исполняемой программы. В C / C ++ вы получаете его от args[0].

Ответы [ 20 ]

384 голосов
/ 06 марта 2009
System.AppDomain.CurrentDomain.FriendlyName
212 голосов
/ 25 февраля 2011

System.AppDomain.CurrentDomain.FriendlyName - возвращает имя файла с расширением (например, MyApp.exe).

System.Diagnostics.Process.GetCurrentProcess().ProcessName - возвращает имя файла без расширения (например, MyApp).

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName - возвращает полный путь и имя файла (например, C: \ examples \ Processes \ MyApp.exe). Затем вы можете передать это в System.IO.Path.GetFileName() или System.IO.Path.GetFileNameWithoutExtension() для достижения тех же результатов, что и выше.

101 голосов
/ 06 марта 2009

System.Diagnostics.Process.GetCurrentProcess() возвращает текущий запущенный процесс. Вы можете использовать свойство ProcessName для определения имени. Ниже приведен пример консольного приложения.

using System;
using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Process.GetCurrentProcess().ProcessName);
        Console.ReadLine();
    }
}
93 голосов
/ 06 марта 2009

Этого должно хватить:

Environment.GetCommandLineArgs()[0];
20 голосов
/ 20 июня 2012

Это код, который работал для меня:

string fullName = Assembly.GetEntryAssembly().Location;
string myName = Path.GetFileNameWithoutExtension(fullName);

Все приведенные выше примеры дали мне имя процесса с vshost или имя запущенной библиотеки.

18 голосов
/ 06 марта 2009

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

System.Reflection.Assembly.GetExecutingAssembly()

Это возвращает вам экземпляр System.Reflection.Assembly, который содержит все данные, которые вы когда-либо хотели бы узнать о текущем приложении. Я думаю, что свойство Location может получить именно то, что вам нужно.

11 голосов
/ 24 апреля 2014

Почему никто не предложил это, все просто.

Path.GetFileName(Application.ExecutablePath)
11 голосов
/ 09 апреля 2013
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name;

даст вам FileName вашего приложения, как; "MyApplication.exe"

10 голосов
/ 03 января 2011

Пара больше вариантов:

  • System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
  • Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
8 голосов
/ 29 апреля 2016

Если вам нужно имя программы для настройки правила брандмауэра, используйте:

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

Это обеспечит правильность имени как при отладке в VisualStudio, так и при запуске приложения непосредственно в Windows.

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