网络位置应以8.3短格式显示路径。我需要将它们转换为长格式,以便在UNIX上使用。

由于它位于网络位置,因此我需要使用UNC路径。

有任何想法吗?

最佳答案

将short转换为long的答案是just a Google search away。这将适用于UNC路径only on Windows Vista and up(以及可能带有某些Service Pack的XP)。

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());
    }
}

09-20 14:56