如何在Delphi中获取长路径而不是短路径?

jus*_*tyy 2 delphi winapi

我在64位Delphi XE8中编译以下代码(COM对象)

function TUtility.GetDLLPath: WideString;
var
  Buffer: array [0 .. C_MAX_PATH_LEN] of char;
begin
  GetModuleFileName(hInstance, Buffer, Length(Buffer));
  Result := Buffer;
end;
Run Code Online (Sandbox Code Playgroud)

我得到以下路径字符串(在VBScript中调用)

C:\PROGRA~2\XYZ\AAABBB~1\64\Tools.dll
Run Code Online (Sandbox Code Playgroud)

如何获得长路径而不是短路径?

Dav*_*nan 5

致电GetLongPathName:

function LongPathName(const ShortPathName: string): string;
var
  Retval: DWORD;
  Buff: array [0..MAX_PATH-1] of Char;
begin
  Retval := GetLongPathName(PChar(ShortPathName), Buff, Length(Buff));
  Win32Check(Retval <> 0);
  Result := Buff;
end;
Run Code Online (Sandbox Code Playgroud)