Использование класса Uri, похоже, работает. Он превращает любой путь к файлу в синтаксис `file: /// ..." в Uri. Он обрабатывает любой URI, как и ожидалось, и способен обрабатывать относительные URI. Это зависит от того, что еще вы пытаетесь сделать с этот путь.
(Обновлено, чтобы показать использование относительных Uri's):
string fileName = @"c:\temp\myfile.bmp";
string relativeFile = @".\woohoo\temp.bmp";
string addressName = @"http://www.google.com/blahblah.html";
Uri uriFile = new Uri(fileName);
Uri uriRelative = new Uri(uriFile, relativeFile);
Uri uriAddress = new Uri(addressName);
Console.WriteLine(uriFile.ToString());
Console.WriteLine(uriRelative.ToString());
Console.WriteLine(uriAddress.ToString());
Дает мне этот вывод:
file:///c:/temp/myfile.bmp
file:///c:/temp/woohoo/temp.bmp
http://www.google.com/blahblah.html