拥有一个显示8.3短格式路径的网络位置。我需要将它们转换为长格式以便在UNIX上使用。
由于我需要它的网络位置,因此需要使用UNC路径。
有什么想法吗?
答案 0 :(得分:2)
将短片换成长片的答案是just a Google search away。这适用于UNC路径only on Windows Vista and up(以及可能的XP w /某些服务包)。
using System;
using System.Runtime.InteropServices;
using System.Text;
public class _Main
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetLongPathName(
string path,
StringBuilder longPath,
int longPathLength
);
public static void Main()
{
StringBuilder longPath = new StringBuilder(255);
GetLongPathName(@"\\?\UNC\server\d$\MYTEMP~1\RESOUR~1\sql.txt", longPath, longPath.Capacity);
Console.WriteLine(longPath.ToString());
}
}
答案 1 :(得分:1)
即使使用UNC路径,这对我也有用:
string shortName = @"\\MyComputer\c$\PROGRA~1";
string longName = new FileInfo(shortName).FullName;
// ==> longname: \\MyComputer\c$\Program Files