直接上代码。
using System.Runtime.InteropServices;
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)] string path,
[MarshalAs(UnmanagedType.LPTStr)] StringBuilder short_path,
int short_len
);
/// <summary>
/// 返回指定长路径的短路径,要求该路径必须在电脑中存在
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string GetShortPath(string name)
{
int length = 0;
length = GetShortPathName(name, null, 0);
if (length == 0)
{
return name;
}
StringBuilder short_name = new StringBuilder(length);
length = GetShortPathName(name, short_name, length);
if (length == 0)
{
return name;
}
return short_name.ToString();
}
调用方式,直接调用GetShortPath方法即可