Probleme mit DACLS
-
Aber wie kann man den die Dacl kopieren oder löschen, vom übergeordneten object? Dass verstehe ich nicht. So wie oben setze ich sie einfach ganz neu oder nicht?
Verstehe es gerade nicht mehr....
-
Gut, dann frage ich mal anders: Was tut es nicht?
Was passiert und was passiert nicht?
-
Es soll eine neue DACL erstellen und die alte dann ersetzen + so einstellen das übergeordnete ACE's nicht vererbt werden (So wie im Code), denn die sind mir ein Dorn im Auge!
Aber es tut sich nichts, und es kommt kein Fehler bei keiner Funktion.
-
Wenn man im Explorer zbsp. ein Ordner erstellt, dan Eigenschaften/Sicherheit/erweitert wählt, hats ja unten ein Hacken der standard-mässig aktiviert ist, und der besagt das die übergeordneten objecte standard-mässig vererbt werden. Jetz mächte ich Programmtechnisch diesen Hacken entfernen! Und eigentlich nichts anderes. Also weiter ... Wenn ich im Explorer diesen Hacken herausnehme kommt eine Dialogbox die mir sagt das ich löschen könne und kopieren. löschen ist was isch möchte! Also wie kann ich sowas umsetzen?
DWORD Res = 0; PACL newdacl = NULL; EXPLICIT_ACCESS ea; ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); ea.grfAccessPermissions = AccessPerms; ea.grfAccessMode = AccessMode; ea.grfInheritance = NO_INHERITANCE; ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME; ea.Trustee.TrusteeType = TRUSTEE_IS_USER; ea.Trustee.ptstrName = (LPTSTR) trustee; ea.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE; ea.Trustee.pMultipleTrustee = NULL; Res = SetEntriesInAcl(1, &ea, NULL, &newdacl); if(Res != ERROR_SUCCESS) { printf("SetEntriesInAcl() failed: %i",GetLastError()); return FALSE; } Res = SetNamedSecurityInfo((LPTSTR) object ,objecttype ,DACL_SECURITY_INFORMATION ,NULL ,NULL ,newdacl ,NULL); if(Res != ERROR_SUCCESS) { printf("SetNamedSecurityInfo() failed: %i",GetLastError()); return FALSE; } LocalFree(newdacl);
So funktionierts nicht...
-
1. Wenn Du nicht mehr verererbst, dann gibt es keine Rechte mehr. Oder? (Natürlich außer dene, die auf dem Verzeichnis extra eingeragen wurden).
2. Also musst Du die bestehende ACL nehmen und kopieren, oder eben eine neue ACL mit den Rechten schreiben die Du möchtest.
-
1.
2. Aber das mach ich ja im Code oben oder etwa nicht?
-
push
-
push
-
pop
-
pop
-
push