2008-09-18 22 views

Respuesta

123

Para obtener el directorio donde el archivo .exe es:

AppDomain.CurrentDomain.BaseDirectory 

para obtener el directorio actual:

Environment.CurrentDirectory 
+2

Gracias. Ayuda cuando el C# .exe está en una carpeta pero se invoca desde otra carpeta (por ejemplo: cuando está en el sistema PATH) – DeepSpace101

+4

Para .NET Core, es 'System.AppContext.BaseDirectory'. – NightOwl888

1

En Windows (no estoy seguro acerca de Unix, etc.) es el primer argumento en la línea de comandos.

En C/C++ elemento coquetea en argv *

WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)

+0

Sí, es el mismo en .NET, también. Primero arg es siempre la ruta completa del ejecutable. –

3

En .NET, puede utilizar System.Environment.CurrentDirectory para obtener el grave desde el cual se inició el proceso.
System.Reflection.Assembly.GetExecutingAssembly().Location le indicará la ubicación del ensamblaje que se está ejecutando actualmente (eso solo es interesante si el ensamblaje que se está ejecutando se carga desde un lugar diferente al del ensamblaje donde comenzó el proceso).

11

Dependiendo de los derechos otorgados a su aplicación, si shadow copying está activo o no y otras opciones de invocación e implementación, diferentes métodos pueden funcionar o producir resultados diferentes, por lo que deberá elegir su arma sabiamente. Una vez dicho esto, todos los siguientes se obtendrán los mismos resultados para una aplicación de consola de plena confianza que se ejecuta localmente en la máquina donde reside:

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); 

Usted tendrá que consultar la documentación de los miembros anteriores para ver los permisos exactos necesarios.

1

Application.StartUpPath;

+0

cuidado para vincular a cierta documentación? –

4

Path.GetDirectoryName (Assembly.GetExecutingAssembly(). Lugar)

Cuestiones relacionadas