Fungsi QueryServiceObjectSecurity (winsvc.h)
Fungsi QueryServiceObjectSecurity mengambil salinan deskriptor keamanan yang terkait dengan objek layanan. Anda juga dapat menggunakan fungsi GetNamedSecurityInfo untuk mengambil deskriptor keamanan.
Sintaks
BOOL QueryServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[out, optional] PSECURITY_DESCRIPTOR lpSecurityDescriptor,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Parameter
[in] hService
Handel ke manajer kontrol layanan atau layanan. Handel ke manajer kontrol layanan dikembalikan oleh fungsi OpenSCManager , dan handel ke layanan dikembalikan oleh fungsi OpenService atau CreateService . Handel harus memiliki hak akses READ_CONTROL.
[in] dwSecurityInformation
Sekumpulan bendera bit yang menunjukkan jenis informasi keamanan yang akan diambil. Parameter ini dapat menjadi kombinasi dari bendera bit SECURITY_INFORMATION , dengan pengecualian bahwa fungsi ini tidak mendukung nilai LABEL_SECURITY_INFORMATION .
[out, optional] lpSecurityDescriptor
Penunjuk ke buffer yang menerima salinan pendeskripsi keamanan objek layanan yang ditentukan. Proses panggilan harus memiliki akses yang sesuai untuk melihat aspek yang ditentukan dari deskriptor keamanan objek. Struktur SECURITY_DESCRIPTOR dikembalikan dalam format relatif mandiri .
[in] cbBufSize
Ukuran buffer yang diarahkan oleh parameter lpSecurityDescriptor , dalam byte. Ukuran terbesar yang diizinkan adalah 8 kilobyte.
[out] pcbBytesNeeded
Penunjuk ke variabel yang menerima jumlah byte yang diperlukan untuk mengembalikan informasi deskriptor keamanan yang diminta, jika fungsi gagal.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Kode kesalahan berikut dapat diatur oleh manajer kontrol layanan. Kode kesalahan lainnya dapat diatur oleh fungsi registri yang dipanggil oleh manajer kontrol layanan.
Menampilkan kode | Deskripsi |
---|---|
|
Handel yang ditentukan tidak dibuka dengan akses READ_CONTROL, atau proses panggilan bukan pemilik objek. |
|
Handel yang ditentukan tidak valid. |
|
Informasi deskriptor keamanan terlalu besar untuk buffer lpSecurityDescriptor . Jumlah byte yang diperlukan untuk mendapatkan semua informasi dikembalikan dalam parameter pcbBytesNeeded . Tidak ada yang ditulis ke buffer lpSecurityDescriptor . |
|
Informasi keamanan yang ditentukan tidak valid. |
Keterangan
Saat layanan dibuat, manajer kontrol layanan menetapkan pendeskripsi keamanan default ke objek layanan. Untuk mengambil salinan deskriptor keamanan untuk objek layanan, panggil fungsi QueryServiceObjectSecurity . Untuk mengubah deskriptor keamanan, panggil fungsi SetServiceObjectSecurity . Untuk deskripsi pendeskripsi keamanan default untuk objek layanan, lihat Keamanan Layanan dan Hak Akses.
Untuk membaca pemilik, grup, atau DACL dari pendeskripsi keamanan objek layanan, proses panggilan harus diberikan READ_CONTROL akses saat handel dibuka. Untuk mendapatkan akses READ_CONTROL, pemanggil harus menjadi pemilik objek atau DACL objek harus memberikan akses.
Untuk membaca SACL dari deskriptor keamanan, proses panggilan harus diberikan ACCESS_SYSTEM_SECURITY akses ketika handel dibuka. Cara yang benar untuk mendapatkan akses ini adalah dengan mengaktifkan hak istimewa SE_SECURITY_NAME dalam token pemanggil saat ini, buka handel untuk akses ACCESS_SYSTEM_SECURITY, lalu nonaktifkan hak istimewa.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winsvc.h (termasuk Windows.h) |
Pustaka | Advapi32.lib |
DLL | Advapi32.dll |