Soms wil je in een programma alleen maar toegang geven tot bepaalde zaken (zoals instellingen, wachtwoorden, etc) als de gebruiker Admin rechten heeft.
Ik kon geen eenvoudige methode vinden in Lazarus Pascal (suggesties zijn zeer welkom!), dus heb ik een kleine functie hiervoor geschreven.
Deze functie vraagt de gebruiker om een Admin wachtwoord, en als dat correct is ingevuld, zal het een TRUE geven.
Indien het wachtwoord fout was of men op "Cancel" heeft geklikt, dan geeft de functie een FALSE terug.
Je moet overigens wel de unit "process" toevoegen aan de "Uses" clausule van jouw programma!
function CheckIfAdmin:boolean;
var s: string;
begin
RunCommand('/usr/bin/osascript',['-e','do shell script "/bin/echo ''OK''" with administrator privileges'],s);
if s='OK'#10 then
result := true
else
result := false;
end;
Deze functie roept OsaScript aam met de opdracht om "Echo 'OK'" met administrator privileges uit te voeren.
Als het juiste wachtwoord werd gebruikt, dan zal "RunCommand" de string "OK" terug geven (in "s"). Omdat er een linefeed achter geplakt zit dus 'OK'#10.
Een simpel voorbeeld hoe je dit kunt gebruiken:
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckIfAdmin then
ShowMessage('Admin!')
else
ShowMessage('Niet Admin!!!');
end;