Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Rechte unter NTFS (2000-Vista) vererben (https://www.delphipraxis.net/88429-windows-rechte-unter-ntfs-2000-vista-vererben.html)

cytrinox 15. Mär 2007 09:19


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 http://www.wilsonc.demon.co.uk/d6ntutils.htm

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 ;)

Alter Mann 15. Mär 2007 14:30

Re: Windows Rechte unter NTFS (2000-Vista) vererben
 
Hallo,

ich würde es so versuchen:
Delphi-Quellcode:
TAccessControlElement.Create(userName, aeAccessAllowed, (CONTAINER_INHERIT_ACE or OBJECT_INHERIT_ACE or SUB_CONTAINERS_AND_OBJECTS_INHERIT), GENERIC_ALL)
Allerdings ist ab W2K die Reihenfolge der ACE innerhalb der ACL wichtig!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz