2

有一个以 8.3 短格式显示路径的网络位置。我需要将这些转换为长格式以便在 UNIX 上使用。

由于它是一个网络位置,我需要它需要使用 UNC 路径。

有任何想法吗?

4

2 回答 2

3

将 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());
    }
}
于 2012-05-23T20:20:59.423 回答
1

即使使用 UNC 路径,这也适用于我:

string shortName = @"\\MyComputer\c$\PROGRA~1";
string longName = new FileInfo(shortName).FullName; 
// ==> longname: \\MyComputer\c$\Program Files 
于 2015-12-23T10:51:30.670 回答