2010-05-14 178 views
6

有没有一种简单的方法来将系统路径变量的路径转换为绝对路径?如何通过系统路径变量从路径获取绝对路径?

所以%ProgramFiles%\Internet Explorer\hmmapi.dll成为C:\Program Files\Internet Explorer\hmmapi.dll

我想知道是否有一个API调用,可以做到这一点,还是我这个做硬盘的方式和检测%..%的序列,并与相应的替换它们环境变量?

回答

12

您可以使用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; 
+0

是的,这是我一直在寻找的功能。在Google上最终使用正确的关键字之后,我也发现了它自己。 – 2010-05-14 09:58:35

+4

ExpandEnvironmentStrings返回包含空字符的长度,因此必须从结果中减去1以返回不带空终止符的字符串。 – 2010-05-14 10:01:48

+0

在尾部#0尾部添加-1 – Harriv 2017-05-03 10:17:17