Я хочу получить имя запущенной в данный момент программы, то есть имя исполняемой программы. В C / C ++ вы получаете его args[0]
.
c#
command-line
Йоаким
источник
источник
Ответы:
источник
System.AppDomain.CurrentDomain.FriendlyName
приложений, развернутых в Click-Once. Для нас это возвращает DefaultDomain , а не оригинальное имя exe.string file = object_of_type_in_application_assembly.GetType().Assembly.Location; string app = System.IO.Path.GetFileNameWithoutExtension( file );
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()
достичь тех же результатов, что и выше.источник
/?
переключатель), потому что использование расширения и пути просто загромождает его без необходимости.GetCurrentProcess()
Process.GetCurrentProcess().ProcessName()
возвращает MyApp.vshost для меня.System.Diagnostics.Process.GetCurrentProcess()
получает текущий запущенный процесс Вы можете использоватьProcessName
свойство, чтобы выяснить имя. Ниже приведен пример консольного приложения.источник
.../bin/mono
* nixes или.../mono.exe
Windows.Этого должно быть достаточно:
источник
Environment.GetCommandLineArgs()
это точный аналог C #argv
из C / C ++.Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0])
Это код, который работал для меня:
Все приведенные выше примеры дали мне имя процесса с vshost или имя запущенной DLL.
источник
Попробуй это:
Это возвращает вам
System.Reflection.Assembly
экземпляр, который содержит все данные, которые вы когда-либо хотели бы знать о текущем приложении. Я думаю, чтоLocation
собственность может получить то, что вам нужно конкретно.источник
CodeBase
а неLocation
в случае, если функция теневого копирования .NET активна. См. Blogs.msdn.com/suzcook/archive/2003/06/26/…даст вам FileName вашего приложения, как; "MyApplication.exe"
источник
Почему никто не предложил это, это просто.
источник
Application.ExecutablePath
«S исходный код .Еще пара вариантов:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
источник
Если вам нужно имя программы для настройки правила брандмауэра, используйте:
Это обеспечит правильность имени как при отладке в VisualStudio, так и при запуске приложения непосредственно в Windows.
источник
Когда сомневаешься или сомневаешься, бегай кругами, кричи и кричи.
Я не могу утверждать, что проверил каждую опцию, но она не делает ничего глупого, как возврат vhost во время сеансов отладки.
источник
System.Reflection.Assembly.GetEntryAssembly().Location
возвращает расположение имени exe, если сборка не загружена из памяти.System.Reflection.Assembly.GetEntryAssembly().CodeBase
возвращает местоположение как URL.источник
Если вы ищете полную информацию о пути вашего исполняемого файла, надежный способ сделать это - использовать следующее:
Это устраняет любые проблемы с dll, vshost и т. Д.
источник
Вы можете использовать
Environment.GetCommandLineArgs()
для получения аргументов иEnvironment.CommandLine
для получения фактической командной строки, как введено.Также вы можете использовать
Assembly.GetEntryAssembly()
илиProcess.GetCurrentProcess()
.Однако при отладке следует соблюдать осторожность, поскольку в этом последнем примере может быть указано имя исполняемого файла вашего отладчика (в зависимости от того, как вы присоединяете отладчик), а не свой исполняемый файл, как и другие примеры.
источник
Environment.CommandLine
дает абсолютный путь, а не введенную командную строку, по крайней мере, в Mono / Linux.Это то, что вы хотите:
источник
В .Net Core (или Mono) большинство ответов не будут применяться, если двоичным файлом, определяющим процесс, является исполняемый двоичный файл Mono или .Net Core (dotnet), а не ваше собственное приложение, которое вас интересует. В этом случае , использовать этот:
источник
GetEntryAssembly()
может вернуть ноль.Для приложений Windows (формы и консоли) я использую это:
Добавьте ссылку на System.Windows.Forms в VS затем:
Это работает правильно для меня, независимо от того, запускаю ли я исполняемый файл или отлаживаюсь в VS.
Обратите внимание, что он возвращает имя приложения без расширения.
Джон
источник
Супер просто, вот:
источник
Это работает, если вам нужно только имя приложения без расширения:
источник
Чтобы получить путь и имя
System.Diagnostics.Process.GetCurrentProcess (). MainModule.FileName
источник