?id=67b505ce-6c70-4274-916b-eceb30e2e85f
Curiosidad: Las distintas formas de averiguar la ruta actual de una aplicación
por José M. Alarcón
¿Cómo averiguamos la ruta en la que está un ejecutable?
Hay varias formas para todos los gustos: desde los que van a lo práctico a los que les "mola" complicarse la vida. Veámoslas todas ;-)
- Solución 1 (fácil):
private static string RutaActual()
{
return Environment.CurrentDirectory;
}
- Solución 2 (fácil):
using System.IO;
private static string RutaActual()
{
return Directory.CurrentDirectory;
}
- Solución 3 (media):
using System.Diagnostics;
private static string RutaActual()
{
string arch = Process.GetCurrentProcess().MainModule.FileName;
return arch.Substring(0, arch.LastIndexOf("\\"));
}
- Solución 4 (super-rebuscada: como la hace la plataforma .NET y usando la API):
private static string RutaActual()
{
string text2;
StringBuilder builder1 = new StringBuilder(0x105);
if (Win32Native.GetCurrentDirectory(builder1.Capacity, builder1) == 0)
{
__Error.WinIOError();
}
string text1 = builder1.ToString();
if (text1.EndsWith(@"\"))
{
text2 = text1 + ".";
}
else
{
text2 = text1 + @"\.";
}
string[] textArray1 = new string[] { text2 } ;
new FileIOPermission(FileIOPermissionAccess.PathDiscovery, textArray1, false, false).Demand();
return text1;
}
En esta última me niego a poner todas las definiciones (copiado y pegado de .NET Reflector) :-(
Escoja la que más le guste, pero lo cierto es que usar la 1, la 2 o 3 es exactamente lo mismo porque las dos primeras llaman a esta última. Así que en el fondo la más rápida puede que sea la tercera que usa una manera completamente distinta de hacerlo ¿o no? Quien sabe... ;-)
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.