有一个以 8.3 短格式显示路径的网络位置。我需要将这些转换为长格式以便在 UNIX 上使用。
由于它是一个网络位置,我需要它需要使用 UNC 路径。
有任何想法吗?
将 short 转换为 long 的答案只是谷歌搜索。这仅适用于 Windows Vista 及更高版本(以及可能带有某些服务包的 XP)上的 UNC 路径。
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());
}
}
即使使用 UNC 路径,这也适用于我:
string shortName = @"\\MyComputer\c$\PROGRA~1";
string longName = new FileInfo(shortName).FullName;
// ==> longname: \\MyComputer\c$\Program Files