Autor Téma: Odstranění DENY ACE z ACL  (Přečteno 802 krát)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1297
  • Karma: 28
    • Pepak.net
Odstranění DENY ACE z ACL
« kdy: 22-12-2016, 08:34:04 »
Ahoj, nemáte někdo tušení, jak odstranit DENY ACE (access control entry) z ACL (access control list)? Přidat ACE do ACL je triviální, stačí správně zavolat SetEntriesInAcl. Pro odebrání ACE z ACL jsem vhodnou funkci nenašel, ale pro ALLOW ACE by to mělo jít udělat také přes SetEntriesInAcl s access mode REVOKE_ACCESS. Pro odebrání DENY ACE nejde použít ani tohle. Jediný způsob, o kterém vím, spočívá v tom, že si vytvořím nový ACL, zjistím si počet ACE v původním ACL pomocí GetAclInformation, následně procházím starý ACL, vyzvedávám si ACE pomocí GetAce a přidávám ho do nového ACL na správné místo pomocí AddAce. Přitom přeskočím ten ACE, kterého se chci zbavit. Zde ale narážím na problém, že nedokážu rozpoznat ten správný ACE - hledám nějaké "compare ACE" nebo tak něco, ale nedaří se... Netušíte někdo? Díky.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1297
  • Karma: 28
    • Pepak.net
Re:Odstranění DENY ACE z ACL
« Odpověď #1 kdy: 22-12-2016, 09:47:30 »
Tak nic, už jsem to prorazil. Je potřeba to dělat přes GetExplicitEntriesFromAcl a následně v nich vyhledávat, přes GetAcl a spol. se mi to nepodařilo. Pozor na to, Delphi nejméně do 7 včetně mají v unitě AccCtrl blbě nadefinované struktury (chybí MINENUMSIZE 4) a Delphi nejméně do 10 včetně mají v unitě AccApi blbě nadeklarované funkce (přinejmenším GetNamedSecurityInfo, SetEntriesInAcl).

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):