Schreib in der Registry in den
HKCU Zweig, der ist für jeden Benutzer spezifisch. Und leg die Ini-Datei nicht im Programm-Order ab, sondern unter "Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\<Dein Programmname>" dann hat jeder User seine eigene Ini-Datei und du hast keine Probleme mit Benutzern, die nicht in das Programmverzeichnis schreiben dürfen. Den Ordner bekommst du mit:
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
pidl: PItemIdList;
FolderPath: string;
SystemFolder: Integer;
begin
FolderPath := '';
SystemFolder := CSIDL;
if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
begin
SetLength(FolderPath, MAX_PATH);
SHGetPathFromIDList(pidl, PChar(FolderPath));
SetLength(FolderPath, lstrlen(PChar(FolderPath)));
end;
Result := FolderPath;
end;
Als CSIDL gibst du CSIDL_LOCAL_APPDATA an, entspricht $1C, falls die Konstante nicht bekannt sein sollte.
Ansonsten den aktuell angemeldeten User bekommst du mit:
Delphi-Quellcode:
function GetUser: string;
const
UNLEN = 256; // Maximum user name length (LmCons.h)
var
Size: DWORD;
begin
Size := UNLEN + 1;
SetLength(Result, Size);
if GetUserName(PChar(Result), Size) then
SetLength(Result, Size)
else
Result := '';
end;
Willst du alle Benutzer haben, musst du auf spezielle NT-
API Funktionen zurückgreifen. Eien Implementation dafür findest du auf meiner Seite:
http://www.luckie-online.de/downloads/ -> NTUser.