Nochmal im Detail Zugriff auf einen Pfad, der schon von Haus aus auch für eingeschränkte Benutzer verfügbar ist (wie ich im anderen Topic erwähnte "Hans Dampf", nur in Gruppe "User", darf dort schalten und walten).
Delphi-Quellcode:
function SpecialDirectory(const iID: Integer): string;
// Needs: ShlObj on Delphi, WinExt on FPC
var aPath : array[0..MAX_PATH] of Char;
pilTemp: PItemIDList;
begin
try
if SHGetSpecialFolderLocation(0, iID, pilTemp)=S_OK then begin
if SHGetPathFromIDList(pilTemp, aPath) then begin
Result := string(aPath);
end else Result := '';
CoTaskMemFree(pilTemp);
end else Result := '';
except
Result := '';
end;
end;
const CSIDL_COMMON_APPDATA = $0023;
var sPath: string;
begin
sPath := SpecialDirectory(CSIDL_COMMON_APPDATA);
end;
Überhaupt keine Anpassung von Rechten etc. notwendig. Siehe auch
MSDN: ShGetSpecialFolderLocation bzw.
MSDN: Liste aller CSIDLs.