Quiero obtener el nombre del programa actualmente en ejecución, ese es el nombre ejecutable del programa. En C / C ++ lo obtienes args[0]
.
c#
command-line
Joakim
fuente
fuente
Respuestas:
fuente
System.AppDomain.CurrentDomain.FriendlyName
aplicaciones desplegadas Click-Once. Para nosotros, esto devuelve " DefaultDomain ", y no el nombre exe original.string file = object_of_type_in_application_assembly.GetType().Assembly.Location; string app = System.IO.Path.GetFileNameWithoutExtension( file );
System.AppDomain.CurrentDomain.FriendlyName
- Devuelve el nombre del archivo con la extensión (por ejemplo, MyApp.exe).System.Diagnostics.Process.GetCurrentProcess().ProcessName
- Devuelve el nombre del archivo sin extensión (por ejemplo, MyApp).System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
- Devuelve la ruta completa y el nombre de archivo (por ejemplo, C: \ Ejemplos \ Procesos \ MyApp.exe). Luego puede pasar estoSystem.IO.Path.GetFileName()
oSystem.IO.Path.GetFileNameWithoutExtension()
lograr los mismos resultados que los anteriores.fuente
/?
cambio) en el programa, porque usar la extensión y la ruta simplemente lo desordenan innecesariamente.GetCurrentProcess()
Process.GetCurrentProcess().ProcessName()
devuelve MyApp.vshost para mí.System.Diagnostics.Process.GetCurrentProcess()
obtiene el proceso actualmente en ejecución. Puede usar laProcessName
propiedad para descubrir el nombre. A continuación se muestra una aplicación de consola de muestra.fuente
.../bin/mono
on * nixes o.../mono.exe
Windows.Esto debería ser suficiente:
fuente
Environment.GetCommandLineArgs()
es el análogo exacto de C # deargv
C / C ++.Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0])
Este es el código que funcionó para mí:
Todos los ejemplos anteriores me dieron el nombre de proceso con vshost o el nombre de dll en ejecución.
fuente
Prueba esto:
Esto le devuelve una
System.Reflection.Assembly
instancia que tiene todos los datos que podría desear saber sobre la aplicación actual. Creo que laLocation
propiedad podría obtener lo que buscas específicamente.fuente
CodeBase
lugar deLocation
en caso de que la función de instantáneas de .NET esté activa. Ver blogs.msdn.com/suzcook/archive/2003/06/26/…le dará el nombre de archivo de su aplicación como; "MyApplication.exe"
fuente
Por qué nadie sugirió esto, es simple.
fuente
Application.ExecutablePath
el código fuente de .Un par de opciones más:
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
fuente
Si necesita el nombre del programa para configurar una regla de firewall, use:
Esto asegurará que el nombre sea correcto tanto al depurar en VisualStudio como al ejecutar la aplicación directamente en Windows.
fuente
Cuando tengas dudas o dudas, corre en círculos, grita y grita.
No puedo afirmar que probé cada opción, pero no hace nada estúpido como devolver el vhost durante las sesiones de depuración.
fuente
System.Reflection.Assembly.GetEntryAssembly().Location
devuelve la ubicación del nombre exe si el ensamblado no se carga desde la memoria.System.Reflection.Assembly.GetEntryAssembly().CodeBase
devuelve la ubicación como URL.fuente
SI está buscando la información de ruta completa de su ejecutable, la forma confiable de hacerlo es utilizar lo siguiente:
Esto elimina cualquier problema con dlls intermedios, vshost, etc.
fuente
Puede usar
Environment.GetCommandLineArgs()
para obtener los argumentos yEnvironment.CommandLine
obtener la línea de comando real tal como se ingresó.Además, puedes usar
Assembly.GetEntryAssembly()
oProcess.GetCurrentProcess()
.Sin embargo, al depurar, debe tener cuidado, ya que este ejemplo final puede dar el nombre ejecutable de su depurador (dependiendo de cómo adjunte el depurador) en lugar de su ejecutable, como pueden hacerlo los otros ejemplos.
fuente
Environment.CommandLine
da la ruta absoluta, no la línea de comando ingresada, al menos en Mono / Linux.Es esto lo que quieres:
fuente
En .Net Core (o Mono), la mayoría de las respuestas no se aplicarán cuando el binario que define el proceso sea el binario de tiempo de ejecución de Mono o .Net Core (dotnet) y no la aplicación real que le interesa. En ese caso , utilizar este:
fuente
GetEntryAssembly()
puede devolver nulo.Para las aplicaciones de Windows (formularios y consola), uso esto:
Agregue una referencia a System.Windows.Forms en VS y luego:
Esto funciona correctamente para mí si estoy ejecutando el ejecutable real o depurando dentro de VS.
Tenga en cuenta que devuelve el nombre de la aplicación sin la extensión.
Juan
fuente
Súper fácil, aquí:
fuente
Esto funciona si solo necesita el nombre de la aplicación sin extensión:
fuente
Para obtener el camino y el nombre
System.Diagnostics.Process.GetCurrentProcess (). MainModule.FileName
fuente