Partager via


SetServiceObjectSecurity, fonction (winsvc.h)

[SetServiceObjectSecurity est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt la fonction SetNamedSecurityInfo .]

La fonction SetServiceObjectSecurity définit le descripteur de sécurité d’un objet de service.

Syntaxe

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

Paramètres

[in] hService

Handle pour le service. Ce handle est retourné par la fonction OpenService ou CreateService . L’accès requis pour ce handle dépend des informations de sécurité spécifiées dans le paramètre dwSecurityInformation .

[in] dwSecurityInformation

Spécifie les composants du descripteur de sécurité à définir. Ce paramètre peut être une combinaison des valeurs suivantes. Notez que les indicateurs non gérés par SetServiceObjectSecurity seront ignorés en mode silencieux.

Valeur Signification
DACL_SECURITY_INFORMATION
Définit la liste de contrôle d’accès discrétionnaire (DACL) de l’objet . Le handle spécifié par hService doit avoir un accès WRITE_DAC, ou le processus appelant doit être le propriétaire de l’objet .
GROUP_SECURITY_INFORMATION
Définit l’identificateur de sécurité du groupe principal (SID) de l’objet . Le handle spécifié par hService doit avoir un accès WRITE_OWNER, ou le processus appelant doit être le propriétaire de l’objet .
OWNER_SECURITY_INFORMATION
Définit le SID du propriétaire de l’objet. Le handle spécifié par hService doit avoir un accès WRITE_OWNER, ou le processus appelant doit être le propriétaire de l’objet ou avoir le privilège SE_TAKE_OWNERSHIP_NAME activé.
SACL_SECURITY_INFORMATION
Définit la liste de contrôle d’accès système (SACL) de l’objet . Le handle spécifié par hService doit avoir un accès ACCESS_SYSTEM_SECURITY.

Pour obtenir un accès ACCESS_SYSTEM_SECURITY

  1. Activez le privilège SE_SECURITY_NAME dans le jeton d’accès actuel de l’appelant.
  2. Ouvrez le handle pour ACCESS_SYSTEM_SECURITY accès.
  3. Désactivez le privilège.

[in] lpSecurityDescriptor

Pointeur vers une structure de SECURITY_DESCRIPTOR qui contient les nouvelles informations de sécurité.

Valeur retournée

Si la fonction réussit, la fonction retourne une valeur différente de zéro.

Si la fonction échoue, elle retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Les codes d’erreur suivants peuvent être définis par le gestionnaire de contrôle de service. D’autres codes d’erreur peuvent être définis par les fonctions de Registre appelées par le gestionnaire de contrôle de service.

Code de retour Description
ERROR_ACCESS_DENIED
Le handle spécifié n’a pas été ouvert avec l’accès requis, ou le processus appelant n’est pas le propriétaire de l’objet.
ERROR_INVALID_HANDLE
Le handle spécifié n’est pas valide.
ERROR_INVALID_PARAMETER
Les informations de sécurité ou le descripteur de sécurité spécifiés ne sont pas valides.
ERROR_SERVICE_MARKED_FOR_DELETE
Le service spécifié a été marqué pour suppression.

Remarques

La fonction SetServiceObjectSecurity définit les parties spécifiées du descripteur de sécurité de l’objet de service en fonction des informations spécifiées dans la mémoire tampon lpSecurityDescriptor . Cette fonction remplace tout ou partie des informations de sécurité associées à l’objet de service, en fonction des indicateurs définis dans le paramètre dwSecurityInformation et soumis aux droits d’accès du processus appelant.

Lorsqu’un service est créé, le gestionnaire de contrôle de service affecte un descripteur de sécurité par défaut à l’objet de service. Pour récupérer une copie du descripteur de sécurité d’un objet de service, appelez la fonction QueryServiceObjectSecurity . Pour obtenir une description du descripteur de sécurité par défaut pour un objet de service, consultez Sécurité du service et droits d’accès.

Notez que l’octroi de certains accès à des utilisateurs non approuvés (tels que SERVICE_CHANGE_CONFIG ou SERVICE_STOP) peut leur permettre d’interférer avec l’exécution de votre service et éventuellement leur permettre d’exécuter des applications sous le compte LocalSystem.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winsvc.h (inclure Windows.h)
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

CreateService

Access Control de bas niveau

Fonctions Access Control de bas niveau

OpenService

QueryServiceObjectSecurity

SECURITY_DESCRIPTOR