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
ERROR_ACCESS_DENIED
Handel yang ditentukan tidak dibuka dengan akses READ_CONTROL, atau proses panggilan bukan pemilik objek.
ERROR_INVALID_HANDLE
Handel yang ditentukan tidak valid.
ERROR_INSUFFICIENT_BUFFER
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 .
ERROR_INVALID_PARAMETER
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

Lihat juga

CreateService

GetNamedSecurityInfo

Access Control tingkat rendah

Fungsi Access Control tingkat rendah

OpenService

SECURITY_DESCRIPTOR

SetServiceObjectSecurity