Vor offensichtlich genau zehn Jahren hatte ich auch eine Frage zu dieser Funktion gestellt - sogar aus dem gleichen Grund:
https://www.delphipraxis.net/171580-...n-isadmin.html
Inzwischen hab ich die Funktion für mich etwas umgebaut, so dass die Bereichsprüfung nur dort und nur temporär deaktiviert wird. Hier der geänderte Ausschnitt:
Delphi-Quellcode:
[...]
for x := 0 to ptgGroups^.GroupCount - 1 do begin
{$IFOPT R+}
{$DEFINE TOGGLED_RANGECHECK}
{$RANGECHECKS OFF}
{$ENDIF}
if EqualSid(psidAdministrators, ptgGroups^.Groups[x].Sid) then begin
//consider denied ACE with Administrator SID
Result:= ptgGroups^.Groups[x].Attributes and SE_GROUP_USE_FOR_DENY_ONLY <> SE_GROUP_USE_FOR_DENY_ONLY;
Break;
end;
{$IFDEF TOGGLED_RANGECHECK}
{$RANGECHECKS ON}
{$ENDIF}
end;
[...]
Seitdem hab ich keine Probleme mehr, egal ob ein Projekt mit oder ohne Bereichsprüfung kompiliert wird.
Wichtig ist, das Projekt nach der Änderung komplett neu zu erzeugen (Shift+F9).
Grüße
Dalai