To get the UNC name of a drive-based path, use the Windows API call WNetGetUniversalName. This function takes a drive-based path (i.e., fully qualified file name) and returns its UNC equivalent.
Be forewarned, though: This call is not supported by Windows 95. Here's something that should work if you're in NT:
function GetUNCName(PathStr : String) : String;
var
 bufSize : DWord;
 buf : TUniversalNameInfo;
 msg : String;
begin
 bufSize := SizeOf(TUniversalNameInfo);
 if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL, 
 buf, bufSize) > 0) then
 case GetLastError of
 ERROR_BAD_DEVICE	 : msg := 'ERROR_BAD_DEVICE';
 ERROR_CONNECTION_UNAVAIL: msg := 'ERROR_CONNECTION_UNAVAIL';
 ERROR_EXTENDED_ERROR : msg := 'ERROR_EXTENDED_ERROR';
 ERROR_MORE_DATA	 : msg := 'ERROR_MORE_DATA';
 ERROR_NOT_SUPPORTED : msg := 'ERROR_NOT_SUPPORTED';
 ERROR_NO_NET_OR_BAD_PATH: msg := 'ERROR_NO_NET_OR_BAD_PATH';
 ERROR_NO_NETWORK	 : msg := 'ERROR_NO_NETWORK';
 ERROR_NOT_CONNECTED : msg := 'ERROR_NOT_CONNECTED';
 end
 else
 msg := buf.lpUniversalName; 
 Result := msg; 
end;