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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk