![]() |
Windows Rechte unter NTFS (2000-Vista) vererben
Hi,
Ich möchte über Delphi für ein bestimmtes Verzeichnis für die Gruppe "Jeder" alle Rechte setzen (GENERIC_ALL oder ähnliches).
Delphi-Quellcode:
procedure AddFileSecurity (const fileName, userName : string);
var f : TNTFileObject; acl : TAccessControlList; begin acl := Nil; f := TNTFileObject.Create(fileName); try acl := TAccessControlList.Create; f.GetDiscretionaryAccessList(acl); acl.AddElement(TAccessControlElement.Create(userName, aeAccessAllowed, (CONTAINER_INHERIT_ACE or OBJECT_INHERIT_ACE), GENERIC_ALL)); f.SetDiscretionaryAccessList(acl); finally acl.Free; f.Free; end end; Setz ich damit für das Verzeichnis C:\test die Rechte werden diese auch für das Verzeichnis übernommen, allerdings nicht für die Unterverzeichnisse sowie Dateien. D.h. Die Gruppe "Jeder" ist nur für C:\Test gesetzt, die Unterverzeichnisse haben immer noch die selben Rechte (Admin, SYSTEM usw..) Ich muss zugeben dass ich in dem ganzen Rechtemanagement von Windows nicht richtig durchblick, ich vermute mal dass die Flags für die Rechten so nicht korrekt sind. Zum Setzen der Rechte benutze ich die Komponente von ![]() Was ich eigentlich brauch ist was altbekanntes aus der UNIX-Welt: 'chmod -R 777 C:\test' :wall: Vielleicht hat sich hier ja schonmal jemand mit diesem grausigen Thema befasst ;) |
Re: Windows Rechte unter NTFS (2000-Vista) vererben
Hallo,
ich würde es so versuchen:
Delphi-Quellcode:
Allerdings ist ab W2K die Reihenfolge der ACE innerhalb der ACL wichtig!
TAccessControlElement.Create(userName, aeAccessAllowed, (CONTAINER_INHERIT_ACE or OBJECT_INHERIT_ACE or SUB_CONTAINERS_AND_OBJECTS_INHERIT), GENERIC_ALL)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz