Es wurde vergessen zu definieren:
dwStructureSize := sizeof(ps);
HA, was das schnell oder was?
Und noch was in Eigenwerbung. So sieht das ganze mit der
JEDI Windows Security Code Library aus
Delphi-Quellcode:
function JwCheckAdministratorAccess : Boolean;
var
SD : TJwSecurityDescriptor;
begin
if not Assigned(JwAdministratorsSID) then
JwInitWellKnownSIDs;
SD := TJwSecurityDescriptor.Create;
try
SD.PrimaryGroup := JwNullSID;
SD.Owner := JwAdministratorsSID;
SD.OwnDACL := true;
SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil,[],
STANDARD_RIGHTS_ALL,JwAdministratorsSID,false));
result := TJwSecureGeneralObject.AccessCheck(SD,nil,STANDARD_RIGHTS_ALL,
TJwSecurityGenericMapping);
finally
FreeAndNil(SD);
end;
end;