JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Curiosidad: Las distintas formas de averiguar la ruta actual de una aplicació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
Banner

Agregar comentario