如何从系统路径变量的路径获取绝对路径?

The*_*Fox 8 delphi path absolute-path

有没有一种简单的方法可以将带有系统路径变量的路径转换为绝对路径?

因此%ProgramFiles%\Internet Explorer\hmmapi.dll变得C:\Program Files\Internet Explorer\hmmapi.dll

我想知道是否有可以执行此操作的API调用,或者我是否必须以困难的方式执行此操作并检测%..%序列并将其替换为相应的环境变量?

Thi*_*ter 16

您可以使用WinAPI函数ExpandEnvironmentStrings:

function ExpandEnvStr(const szInput: string): string;
  const
    MAXSIZE = 32768;
  begin
    SetLength(Result,MAXSIZE);
    SetLength(Result,ExpandEnvironmentStrings(pchar(szInput),
      @Result[1],length(Result)) - 1);
  end;
Run Code Online (Sandbox Code Playgroud)

  • ExpandEnvironmentStrings返回包含空字符的长度,因此您必须从结果中减去1以返回不带空终止符的字符串. (4认同)