ACL Oluşturma veya Değiştirme
Windows, erişim denetimi listesi (ACL) oluşturan veya mevcut bir ACL'deerişim denetimi girdilerini değiştiren bir dizi işlevi destekler.
SetEntriesInAcl işlevi yeni bir ACL oluşturur. SetEntriesInAcl ACL için tamamen yeni bir ACL kümesi belirtebilir veya bir veya daha fazla yeni ACL'yi mevcut ACL'nin ACL'leriyle birleştirebilir. SetEntriesInAcl işlevi, yeni ACL'ler için bilgileri belirtmek için bir dizi EXPLICIT_ACCESS yapısı kullanır. Her EXPLICIT_ACCESS yapısı tek bir ACE'i açıklayan bilgiler içerir. Bu bilgiler erişim haklarını, ACE türünü, ACE devralmayı denetleen bayrakları ve mütevelliyi tanımlayan TRUSTEE yapısını içerir.
Var olan bir ACL'ye yeni bir ACE eklemek için
- GetSecurityInfo veya GetNamedSecurityInfo işlevini kullanarak nesnenin güvenlik tanımlayıcısından mevcut DACL'yi veya SACL'yialın.
- Her yeni ACE için, EXPLICIT_ACCESS bir yapıyı ACE'yi açıklayan bilgilerle doldurmak için BuildExplicitAccessWithName işlevini çağırın.
- Mevcut ACL'yi ve yeni ACL'ler için EXPLICIT_ACCESS yapı dizisini belirterekSetEntriesInAclçağırın. SetEntriesInAcl işlevi ACL'yi ve ACE'lerini tahsis eder ve başlatır.
- SetSecurityInfo veya SetNamedSecurityInfo işlevini çağırarak yeni ACL'yi nesnenin güvenlik tanımlayıcısına ekleyin.
Çağıran mevcut bir ACL belirtirse, setEntriesInAclyeni ACE bilgilerini ACL'deki mevcut ACL'lerle birleştirir. Örneğin, mevcut ACL'nin belirli bir yetkiliye erişim izni verdiği ve EXPLICIT_ACCESS yapısının aynı yetkiliye erişimi reddettiği durumu göz önünde bulundurun. Bu durumda, SetEntriesInAcl, güvenen için erişim reddedilen yeni bir ACE ekler ve güvenen için erişim izni verilen mevcut ACE'yi siler veya değiştirir.
Yeni bir ACE'yi mevcut bir ACL ile birleştirilen örnek kod için bkz. C++nesnenin ACL'lerini değiştirme.