using System; using System.Collections.Generic; using System.IO; public class MyClass { public static void Main() { Console.WriteLine(GetUNCPath(@"<>")); RL(); } public static string GetUNCPath(string originalPath) { string returnVal = originalPath; foreach (DriveInfo drive in System.IO.DriveInfo.GetDrives()) { if (Path.GetPathRoot(originalPath).ToLower().StartsWith(drive.RootDirectory.FullName.ToLower())) { //MessageBox.Show(string.Format("Drive: {0}, Type: {1}", drive.Name, drive.DriveType.ToString())); if (drive.DriveType == DriveType.Network) { System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher( @"\\.\root\cimv2", "Select * From Win32_LogicalDisk Where DriveType = 4"); foreach (System.Management.ManagementObject obj in searcher.Get()) { if (obj["DeviceID"].ToString().ToLower().StartsWith(drive.Name.ToLower().Substring(0, 2))) { returnVal = Path.Combine(obj["ProviderName"].ToString(), originalPath.ToLower().Replace(drive.Name.ToLower(), string.Empty)); break; } } } else if (drive.DriveType == DriveType.Fixed) { Console.WriteLine("The drive is not a network drive"); } break; } } return returnVal; } #region Helper methods private static void WL(object text, params object[] args) { Console.WriteLine(text.ToString(), args); } private static void RL() { Console.ReadLine(); } private static void Break() { System.Diagnostics.Debugger.Break(); } #endregion }