Fungsi SetSecurityDescriptorDacl (securitybaseapi.h)

Fungsi SetSecurityDescriptorDacl menetapkan informasi dalam daftar kontrol akses diskresi (DACL). Jika DACL sudah ada di deskriptor keamanan, DACL diganti.

Sintaks

BOOL SetSecurityDescriptorDacl(
  [in, out]      PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in]           BOOL                 bDaclPresent,
  [in, optional] PACL                 pDacl,
  [in]           BOOL                 bDaclDefaulted
);

Parameter

[in, out] pSecurityDescriptor

Penunjuk ke struktur SECURITY_DESCRIPTOR tempat fungsi menambahkan DACL. Deskriptor keamanan ini harus dalam format absolut , yang berarti bahwa anggotanya harus mengarah ke struktur lain, bukan offset ke data yang berdekatan.

[in] bDaclPresent

Bendera yang menunjukkan keberadaan DACL di deskriptor keamanan. Jika parameter ini TRUE, fungsi mengatur bendera SE_DACL_PRESENT dalam struktur SECURITY_DESCRIPTOR_CONTROL dan menggunakan nilai dalam parameter pDacl dan bDaclDefaulted . Jika parameter ini FALSE, fungsi menghapus bendera SE_DACL_PRESENT, dan pDacl dan bDaclDefaulted diabaikan.

[in, optional] pDacl

Penunjuk ke struktur ACL yang menentukan DACL untuk deskriptor keamanan. Jika parameter ini NULL, DACL NULL ditetapkan ke deskriptor keamanan, yang memungkinkan semua akses ke objek. DACL direferensikan oleh, tidak disalin ke dalam, deskriptor keamanan.

[in] bDaclDefaulted

Bendera yang menunjukkan sumber DACL. Jika bendera ini TRUE, DACL telah diambil oleh beberapa mekanisme default. Jika FALSE, DACL telah ditentukan secara eksplisit oleh pengguna. Fungsi menyimpan nilai ini dalam bendera SE_DACL_DEFAULTED struktur SECURITY_DESCRIPTOR_CONTROL . Jika parameter ini tidak ditentukan, bendera SE_DACL_DEFAULTED akan dihapus.

Nilai kembali

Jika fungsi berhasil, fungsi mengembalikan bukan nol.

Jika fungsi gagal, fungsi akan mengembalikan nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Ada perbedaan penting antara DACL kosong dan tidak ada. Ketika DACL kosong, DACL tidak berisi entri kontrol akses (ACE); oleh karena itu, tidak ada hak akses yang diberikan secara eksplisit. Akibatnya, akses ke objek ditolak secara implisit.

Ketika objek tidak memiliki DACL (ketika parameter pDaclADALAH NULL), tidak ada perlindungan yang ditetapkan ke objek, dan semua permintaan akses diberikan. Untuk membantu menjaga keamanan, batasi akses dengan menggunakan DACL.

Ada tiga kemungkinan hasil dalam konfigurasi yang berbeda dari bendera bDaclPresent dan parameter pDacl :

  • Ketika parameter pDacl menunjuk ke DACL dan bendera bDaclPresentADALAH TRUE, DACL ditentukan dan harus berisi ACE yang diizinkan akses untuk memungkinkan akses ke objek.
  • Ketika parameter pDacl tidak menunjuk ke DACL dan bendera bDaclPresent adalah TRUE, DACL NULL ditentukan. Semua akses diperbolehkan. Anda tidak boleh menggunakan NULL DACL dengan objek karena setiap pengguna dapat mengubah DACL dan pemilik deskriptor keamanan. Ini akan mengganggu penggunaan objek.
  • Ketika parameter pDacl tidak menunjuk ke DACL dan bendera bDaclPresentadalah FALSE, DACL dapat disediakan untuk objek melalui mekanisme pewarisan atau default.

Contoh

Untuk contoh yang menggunakan fungsi ini, lihat Membuat Deskriptor Keamanan untuk Objek Baru.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header securitybaseapi.h (termasuk Windows.h)
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

GetSecurityDescriptorDacl

InitializeSecurityDescriptor

IsValidSecurityDescriptor

Access Control tingkat rendah

Fungsi Access Control tingkat rendah

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL

SetSecurityDescriptorGroup

SetSecurityDescriptorOwner

SetSecurityDescriptorSacl