Can't  you use Path.GetFullPath for this, assuming you combine the directory info path with the relative path? I thought that GetFullPath was able to properly handle ..\ bits.