Funzione QueryServiceObjectSecurity (winsvc.h)
La funzione QueryServiceObjectSecurity recupera una copia del descrittore di sicurezza associato a un oggetto servizio. È anche possibile usare la funzione GetNamedSecurityInfo per recuperare un descrittore di sicurezza.
Sintassi
BOOL QueryServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[out, optional] PSECURITY_DESCRIPTOR lpSecurityDescriptor,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Parametri
[in] hService
Handle al gestore del controllo del servizio o al servizio. Gli handle alla gestione controllo del servizio vengono restituiti dalla funzione OpenSCManager e gli handle a un servizio vengono restituiti dalla funzione OpenService o CreateService. L'handle deve avere il diritto di accesso READ_CONTROL.
[in] dwSecurityInformation
Set di flag di bit che indicano il tipo di informazioni di sicurezza da recuperare. Questo parametro può essere una combinazione dei flag di bit SECURITY_INFORMATION , con l'eccezione che questa funzione non supporta il valore LABEL_SECURITY_INFORMATION .
[out, optional] lpSecurityDescriptor
Puntatore a un buffer che riceve una copia del descrittore di sicurezza dell'oggetto servizio specificato. Il processo chiamante deve avere l'accesso appropriato per visualizzare gli aspetti specificati del descrittore di sicurezza dell'oggetto. La struttura SECURITY_DESCRIPTOR viene restituita in formato auto-relativo .
[in] cbBufSize
Dimensioni del buffer a cui punta il parametro lpSecurityDescriptor , in byte. La dimensione più grande consentita è di 8 kilobyte.
[out] pcbBytesNeeded
Puntatore a una variabile che riceve il numero di byte necessari per restituire le informazioni del descrittore di sicurezza richieste, se la funzione ha esito negativo.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
I codici di errore seguenti possono essere impostati dal gestore di controllo del servizio. Altri codici di errore possono essere impostati dalle funzioni del Registro di sistema chiamate dalla gestione controllo del servizio.
Codice restituito | Descrizione |
---|---|
|
L'handle specificato non è stato aperto con l'accesso READ_CONTROL oppure il processo chiamante non è il proprietario dell'oggetto. |
|
L'handle specificato non è valido. |
|
Le informazioni sul descrittore di sicurezza sono troppo grandi per il buffer lpSecurityDescriptor . Il numero di byte necessari per ottenere tutte le informazioni viene restituito nel parametro pcbBytesNeeded. Niente viene scritto nel buffer lpSecurityDescriptor . |
|
Le informazioni di sicurezza specificate non sono valide. |
Commenti
Quando viene creato un servizio, il responsabile del controllo del servizio assegna un descrittore di sicurezza predefinito all'oggetto servizio. Per recuperare una copia del descrittore di sicurezza per un oggetto servizio, chiamare la funzione QueryServiceObjectSecurity . Per modificare il descrittore di sicurezza, chiamare la funzione SetServiceObjectSecurity . Per una descrizione del descrittore di sicurezza predefinito per un oggetto servizio, vedere Diritti di sicurezza e accesso del servizio.
Per leggere il proprietario, il gruppo o il daCL dal descrittore di sicurezza dell'oggetto servizio, il processo chiamante deve essere stato concesso READ_CONTROL accesso al momento dell'apertura dell'handle. Per ottenere READ_CONTROL accesso, il chiamante deve essere il proprietario dell'oggetto o l'elenco dati dell'oggetto deve concedere l'accesso.
Per leggere SACL dal descrittore di sicurezza, il processo chiamante deve essere stato concesso ACCESS_SYSTEM_SECURITY accesso al momento dell'apertura dell'handle. Il modo corretto per ottenere questo accesso consiste nell'abilitare il privilegio SE_SECURITY_NAME nel token corrente del chiamante, aprire l'handle per l'accesso ACCESS_SYSTEM_SECURITY e quindi disabilitare il privilegio.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winsvc.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |
Vedi anche
Controllo di accesso di basso livello