Condividi tramite


Funzione SetServiceObjectSecurity (winsvc.h)

[SetServiceObjectSecurity è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. Usare invece la funzione SetNamedSecurityInfo .]

La funzione SetServiceObjectSecurity imposta il descrittore di sicurezza di un oggetto servizio.

Sintassi

BOOL SetServiceObjectSecurity(
  [in] SC_HANDLE            hService,
  [in] SECURITY_INFORMATION dwSecurityInformation,
  [in] PSECURITY_DESCRIPTOR lpSecurityDescriptor
);

Parametri

[in] hService

Handle per il servizio. Questo handle viene restituito dalla funzione OpenService o CreateService . L'accesso necessario per questo handle dipende dalle informazioni di sicurezza specificate nel parametro dwSecurityInformation .

[in] dwSecurityInformation

Specifica i componenti del descrittore di sicurezza da impostare. Questo parametro può essere una combinazione dei valori seguenti. Si noti che i flag non gestiti da SetServiceObjectSecurity verranno ignorati automaticamente.

Valore Significato
DACL_SECURITY_INFORMATION
Imposta l'elenco di controllo di accesso discrezionale (DACL) dell'oggetto . L'handle specificato da hService deve avere WRITE_DAC accesso oppure il processo chiamante deve essere il proprietario dell'oggetto.
GROUP_SECURITY_INFORMATION
Imposta l'identificatore di sicurezza del gruppo primario (SID) dell'oggetto . L'handle specificato da hService deve avere accesso WRITE_OWNER oppure il processo chiamante deve essere il proprietario dell'oggetto.
OWNER_SECURITY_INFORMATION
Imposta il SID del proprietario dell'oggetto . L'handle specificato da hService deve avere accesso WRITE_OWNER oppure il processo chiamante deve essere il proprietario dell'oggetto o avere il privilegio SE_TAKE_OWNERSHIP_NAME abilitato.
SACL_SECURITY_INFORMATION
Imposta l'elenco di controllo di accesso di sistema (SACL) dell'oggetto . L'handle specificato da hService deve avere accesso ACCESS_SYSTEM_SECURITY.

Per ottenere l'accesso ACCESS_SYSTEM_SECURITY

  1. Abilitare il privilegio SE_SECURITY_NAME nel token di accesso corrente del chiamante.
  2. Aprire l'handle per l'accesso ACCESS_SYSTEM_SECURITY.
  3. Disabilitare il privilegio.

[in] lpSecurityDescriptor

Puntatore a una struttura SECURITY_DESCRIPTOR contenente le nuove informazioni di sicurezza.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.

Se la funzione ha esito negativo, restituisce 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 dal gestore di controllo del servizio.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
L'handle specificato non è stato aperto con l'accesso richiesto oppure il processo chiamante non è il proprietario dell'oggetto.
ERROR_INVALID_HANDLE
L'handle specificato non è valido.
ERROR_INVALID_PARAMETER
Le informazioni di sicurezza o il descrittore di sicurezza specificati non sono validi.
ERROR_SERVICE_MARKED_FOR_DELETE
Il servizio specificato è stato contrassegnato per l'eliminazione.

Commenti

La funzione SetServiceObjectSecurity imposta le parti specificate del descrittore di sicurezza dell'oggetto servizio in base alle informazioni specificate nel buffer lpSecurityDescriptor . Questa funzione sostituisce qualsiasi o tutte le informazioni di sicurezza associate all'oggetto servizio, in base ai flag impostati nel parametro dwSecurityInformation e soggetti ai diritti di accesso del processo chiamante.

Quando viene creato un servizio, gestione 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 una descrizione del descrittore di sicurezza predefinito per un oggetto servizio, vedere Sicurezza del servizio e diritti di accesso.

Si noti che la concessione di determinati accessi a utenti non attendibili (ad esempio SERVICE_CHANGE_CONFIG o SERVICE_STOP) può consentire loro di interferire con l'esecuzione del servizio e possibilmente consentire l'esecuzione di applicazioni con l'account LocalSystem.

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

CreateService

Controllo di accesso di basso livello

Funzioni di Controllo di accesso di basso livello

Openservice

QueryServiceObjectSecurity

SECURITY_DESCRIPTOR