Einzelnen Beitrag anzeigen

hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: DACL: inheritance-Flag, von wem geerbt?

  Alt 21. Jul 2011, 12:51
Ich antworte mal mir selber

Es geht mit der Jwscl relativ simple:
Delphi-Quellcode:
procedure TReadDACL_JVWS.LiesDACL(cFile: string);
var
    oFD : TJwSecureFileObject;
    oDacl : TJwDAccessControlList;
    aGeerbt : TJwInheritedFromArray;
    i : Integer;
    aElem : TJwInheritedFromRecord;
    cZeile : string;
begin
  try
    oFD := TJwSecureFileObject.Create(cFile);
    try
      oDacl := oFD.GetDACL();
      if oDacl <> nil then begin
        aGeerbt := oFD.GetFileInheritanceSource(True); // <- Hier ist das Geheimnis vergraben!
        for i := 0 to oDacl.Count - 1 do begin
          aDElem := oDacl.Items[i];
          cZeile := aDElem.SID.AccountName[aDElem.SID.CachedSystemName] + ' ';
          if i < Length(aGeerbt) then begin
            aElem := aGeerbt[i];
            if aElem.UserName = 'then begin
              cZeile := cZeile + '<nicht geerbt>';
            end else begin
              cZeile := cZeile + 'geerbt von ' + aElem.AncestorName;
            end; // if .UserName = ''
          end else begin
            cZeile := cZeile + '<Kein passender Eintrag in Inheritance>';
          end; // if i < Length(aGeerbt)
          AddProtokoll(cZeile);
        end; // for i := 0 to
        oDacl.Free();
      end; // if oDacl <> nil
    except
      AddProtokoll('Konnte DACL nicht auslesen');
    end;
    oFD.Free;
  except
    AddProtokoll('Konnte SecurityDescriptor nicht auslesen');
  end;

end;
Zum Schluss steht in cZeile die gewünschten Informationen: welcher Benutzer hat von wo geerbt
  Mit Zitat antworten Zitat