Escrito por
el 10 noviembre 2005 22:14
[Leer sin negritas]
¿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... ;-)