Droits d’accès et de sécurité des objets de synchronisation

Le modèle de sécurité Windows vous permet de contrôler l’accès aux objets d’événement, mutex, sémaphore et minuteur d’attente. Les files d’attente du minuteur, les variables verrouillées et les objets de section critiques ne sont pas sécurisables. Pour plus d’informations, consultez Modèle de contrôle d’accès.

Vous pouvez spécifier un descripteur de sécurité pour un objet de synchronisation interprocessus lorsque vous appelez la fonction CreateEvent, CreateMutex, CreateSemaphore ou CreateWaitableTimer . Si vous spécifiez NULL, l’objet obtient un descripteur de sécurité par défaut. Les listes de contrôle d’accès (ACL) dans le descripteur de sécurité par défaut pour un objet de synchronisation proviennent du jeton principal ou d’emprunt d’identité du créateur.

Pour obtenir ou définir le descripteur de sécurité d’un objet événement, mutex, sémaphore ou minuteur d’attente, appelez les fonctions GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo ou SetSecurityInfo .

Les handles retournés par CreateEvent, CreateMutex, CreateSemaphore et CreateWaitableTimer ont un accès complet au nouvel objet. Lorsque vous appelez les fonctions OpenEvent, OpenMutex, OpenSemaphore et OpenWaitableTimer , le système vérifie les droits d’accès demandés par rapport au descripteur de sécurité de l’objet.

Les droits d’accès valides pour les objets de synchronisation interprocessus incluent les droits d’accès standard et certains droits d’accès spécifiques à l’objet. Le tableau suivant répertorie les droits d’accès standard utilisés par tous les objets.

Valeur Signification
DELETE (0x00010000L) Requis pour supprimer l’objet.
READ_CONTROL (0x00020000L) Obligatoire pour lire les informations dans le descripteur de sécurité de l’objet, sans inclure les informations dans la liste SACL. Pour lire ou écrire la SACL, vous devez demander le droit d’accès ACCESS_SYSTEM_SECURITY . Pour plus d’informations, consultez Droit d’accès SACL.
SYNCHRONIZE (0x00100000L) Droit d'utiliser l'objet pour la synchronisation. Cela permet à un thread d’attendre que l’objet soit dans l’état signalé.
WRITE_DAC (0x00040000L) Obligatoire pour modifier le dacl dans le descripteur de sécurité de l’objet .
WRITE_OWNER (0x00080000L) Obligatoire pour modifier le propriétaire dans le descripteur de sécurité de l’objet .

 

Le tableau suivant répertorie les droits d’accès spécifiques à l’objet pour les objets d’événement. Ces droits sont pris en charge en plus des droits d’accès standard.

Valeur Signification
EVENT_ALL_ACCESS (0x1F0003) Tous les droits d’accès possibles pour un objet d’événement. Utilisez ce droit uniquement si votre application nécessite un accès au-delà de celui accordé par les droits d’accès et les EVENT_MODIFY_STATE standard. L’utilisation de ce droit d’accès augmente la possibilité que votre application soit exécutée par un administrateur.
EVENT_MODIFY_STATE (0x0002) Modifiez l’accès à l’état, qui est requis pour les fonctions SetEvent, ResetEvent et PulseEvent .

 

Le tableau suivant répertorie les droits d’accès spécifiques à l’objet pour les objets mutex. Ces droits sont pris en charge en plus des droits d’accès standard.

Valeur Signification
MUTEX_ALL_ACCESS (0x1F0001) Tous les droits d’accès possibles pour un objet mutex. Utilisez ce droit uniquement si votre application nécessite un accès au-delà de celui accordé par les droits d’accès standard. L’utilisation de ce droit d’accès augmente la possibilité que votre application soit exécutée par un administrateur.
MUTEX_MODIFY_STATE (0x0001) Réservé pour un usage futur.

 

Le tableau suivant répertorie les droits d’accès spécifiques à l’objet pour les objets sémaphores. Ces droits sont pris en charge en plus des droits d’accès standard.

Valeur Signification
SEMAPHORE_ALL_ACCESS (0x1F0003) Tous les droits d’accès possibles pour un objet sémaphore. Utilisez ce droit uniquement si votre application nécessite un accès au-delà de celui accordé par les droits d’accès et les SEMAPHORE_MODIFY_STATE standard. L’utilisation de ce droit d’accès augmente la possibilité que votre application soit exécutée par un administrateur.
SEMAPHORE_MODIFY_STATE (0x0002) Modifiez l’accès à l’état, qui est requis pour la fonction ReleaseSemaphore .

 

Le tableau suivant répertorie les droits d’accès spécifiques à l’objet pour les objets du minuteur d’attente. Ces droits sont pris en charge en plus des droits d’accès standard.

Valeur Signification
TIMER_ALL_ACCESS (0x1F0003) Tous les droits d’accès possibles pour un objet minuteur pouvant être attendu. Utilisez ce droit uniquement si votre application nécessite un accès au-delà de celui accordé par les droits d’accès et les TIMER_MODIFY_STATE standard. L’utilisation de ce droit d’accès augmente la possibilité que votre application soit exécutée par un administrateur.
TIMER_MODIFY_STATE (0x0002) Modifiez l’accès à l’état, ce qui est requis pour les fonctions SetWaitableTimer et CancelWaitableTimer .
TIMER_QUERY_STATE (0x0001) Réservé pour un usage futur.

 

Pour lire ou écrire la SACL d’un objet de synchronisation interprocessus, vous devez demander le droit d’accès ACCESS_SYSTEM_SECURITY . Pour plus d’informations, consultez Listes de contrôle d’accès (ACL) et Droit d’accès SACL.