Membuat atau Mengubah ACL

Windows mendukung sekumpulan fungsi yang membuat daftar kontrol akses (ACL) atau mengubah entri kontrol akses (ACL) di ACL yang ada.

Fungsi SetEntriesInAcl membuat ACL baru. SetEntriesInAcl dapat menentukan sekumpulan ACE yang sama sekali baru untuk ACL, atau dapat menggabungkan satu atau beberapa ACE baru dengan ACL yang ada. Fungsi SetEntriesInAcl menggunakan array struktur EXPLICIT_ACCESS untuk menentukan informasi untuk ACE baru. Setiap struktur EXPLICIT_ACCESS berisi informasi yang menjelaskan satu ACE. Informasi ini mencakup hak akses, jenis ACE, bendera yang mengontrol pewarisan ACE, dan struktur TRUSTEE yang mengidentifikasi wali.

Untuk menambahkan ACE baru ke ACL yang sudah ada

  1. Gunakan fungsi GetSecurityInfo atau GetNamedSecurityInfo untuk mendapatkan DACL atau SACL yang ada dari deskriptor keamanan objek.
  2. Untuk setiap ACE baru, panggil fungsi BuildExplicitAccessWithName untuk mengisi struktur EXPLICIT_ACCESS dengan informasi yang menjelaskan ACE.
  3. Panggil SetEntriesInAcl, menentukan ACL yang ada dan array struktur EXPLICIT_ACCESS untuk ACE baru. Fungsi SetEntriesInAcl mengalokasikan dan menginisialisasi ACL dan ACE-nya.
  4. Panggil fungsi SetSecurityInfo atau SetNamedSecurityInfo untuk melampirkan ACL baru ke deskriptor keamanan objek.

Jika pemanggil menentukan ACL yang ada, SetEntriesInAcl menggabungkan informasi ACE baru dengan ACE yang ada di ACL. Pertimbangkan kasus, misalnya, di mana ACL yang ada memberikan akses ke wali yang ditentukan dan struktur EXPLICIT_ACCESS menolak akses ke wali yang sama. Dalam hal ini, SetEntriesInAcl menambahkan ACE baru yang ditolak akses untuk wali amanat dan menghapus atau memodifikasi ACE yang diizinkan akses yang ada untuk wali amanat.

Untuk kode sampel yang menggabungkan ACE baru ke ACL yang sudah ada, lihat Memodifikasi ACL Objek di C++.