This is a refinement of what you suggested:
vb.net Code:
  1. Private Function GetOriginalPath(ByVal path As String) As String
  2.     Dim root As String = IO.Path.GetPathRoot(path)
  3.     Dim nodes As New Stack(Of String)
  4.  
  5.     While path <> root
  6.         nodes.Push(IO.Path.GetFileName(path))
  7.         path = IO.Path.GetDirectoryName(path)
  8.     End While
  9.  
  10.     Dim node As String
  11.     Dim originalPath As String = root.ToUpper()
  12.  
  13.     While nodes.Count > 0
  14.         node = nodes.Pop
  15.         originalPath = IO.Directory.GetDirectories(originalPath, node)(0)
  16.     End While
  17.  
  18.     Return originalPath
  19. End Function
I forgot we were in C# land. If you need me to convert let me know.