Bevor du irgendwas komisches frickelst, schau dir wirklich, wie schon gesagt, mal
SHGetFolderPath an...
Edit:
Delphi-Quellcode:
uses
ActiveX, ShlObj;
function GetShellFolder(CSIDL: integer):
string;
var
pidl: PItemIdList;
SystemFolder: Integer;
Malloc: IMalloc;
begin
Malloc :=
nil;
Result := '
';
SHGetMalloc(Malloc);
if Malloc =
nil then
begin
Exit;
end;
try
SystemFolder := CSIDL;
if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl))
then
begin
SetLength(Result, MAX_PATH);
if SHGetPathFromIDList(pidl, PChar(Result))
then
begin
SetLength(Result, Length(PChar(Result)));
end else
Result := '
';
end;
finally
Malloc.Free(pidl);
end;
end;
function PfadZuAnwendungsDaten:
string;
begin
Dir := GetShellFolder(CSIDL_APPDATA);
end;
Um zum Benutzerprofil zu kommen, musst du vermutlich unten CSIDL_APPDATA durch $0028 ersetzen.