sollte man nicht noch die pidl wieder freigeben? (mit CoTaskMemFree)
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
pidl: PItemIdList;
SystemFolder: Integer;
begin
SystemFolder := CSIDL;
if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
begin
SetLength(Result, MAX_PATH);
SHGetPathFromIDList(pidl, PChar(Result));
SetLength(Result, lstrlen(PChar(Result)));
CoTaskMemFree(pidl);
end else Result := '';
end;