Rutas absolutas con unidades de red en C#

Rutas absolutas con unidades de red en C#

A veces se necesita saber las rutas absolutas y completaa del recurso, aunque sea una unidad de red. La solución:

#region Utils
/// <summary>
/// Devuelve rutas absolutas completas del path que se le pasa.
/// Es capaz de detectar unidades de red e incorporar la ruta absoluta de red.
/// </summary>
/// <param name=”path”>path</param>
/// <returns>path absoluto</returns>
public static string GetAbsoluteUri(string path)
{

if (string.IsNullOrWhiteSpace(path)) return path;
string pathFull = “”;
try
{

pathFull = Path.Combine(Directory.GetParent(path).ToString(), Path.GetFileName(path));

}
catch (Exception)
{

return path;

}
string root = Directory.GetDirectoryRoot(pathFull).ToUpper();
IEnumerable<DriveInfo> drives = from drive in DriveInfo.GetDrives() where drive.Name == root select drive;
if (drives.Count() == 0) return pathFull;
DriveInfo di = drives.ElementAt(0);
if (di.DriveType == DriveType.Network)
{

ManagementObject mo = new ManagementObject();
mo.Path = new ManagementPath(string.Format(“Win32_LogicalDisk='{0}'”, root.Replace(Path.DirectorySeparatorChar.ToString(), “”)));
pathFull = Path.Combine((string)mo[“ProviderName”], pathFull.Substring(root.Length));

}
return pathFull;

}
#endregion

César Themudo