2010-05-14 204 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