Index: /branches/eraser6/6.0/Eraser.Util/NTApi.cs
===================================================================
--- /branches/eraser6/6.0/Eraser.Util/NTApi.cs	(revision 2553)
+++ /branches/eraser6/6.0/Eraser.Util/NTApi.cs	(revision 2554)
@@ -96,5 +96,5 @@
 
 					//Is it a directory? If it is, we need to add a trailing \
-					if (Directory.Exists(path))
+					if (Directory.Exists(path) && !result.EndsWith("\\"))
 						result += '\\';
 					return result;
Index: /branches/eraser6/6.0/Eraser.Util/VolumeInfo.cs
===================================================================
--- /branches/eraser6/6.0/Eraser.Util/VolumeInfo.cs	(revision 2553)
+++ /branches/eraser6/6.0/Eraser.Util/VolumeInfo.cs	(revision 2554)
@@ -29,4 +29,5 @@
 using Microsoft.Win32.SafeHandles;
 using System.Collections.ObjectModel;
+using System.Globalization;
 
 namespace Eraser.Util
@@ -326,8 +327,18 @@
 						currentDir = NTApi.ResolveReparsePoint(currentDir);
 
+						//If we get a volume identifier, we need to see if it is the only thing
+						//in the path. If it is, we found our volume GUID and we won't have to
+						//call GetVolumeNameForVolumeMountPoint.
+						if (currentDir.StartsWith("\\??\\Volume{"))
+						{
+							if (currentDir.Length == 49 && currentDir.EndsWith("}\\"))
+								return new VolumeInfo(string.Format(CultureInfo.InvariantCulture,
+									"\\\\?\\Volume{{{0}}}\\", currentDir.Substring(11, 36)));
+							else
+								throw new ArgumentException(S._("The path provided includes a " +
+									"reparse point which references another volume."));
+						}
+
 						//Strip the NT namespace bit
-						if (currentDir.StartsWith("\\??\\Volume"))
-							throw new ArgumentException(S._("The path provided includes a reparse" +
-								"point which references another volume."));
 						else
 							currentDir = currentDir.Substring(4);
