Sicherheit und Zugriffsrechte für Synchronisierungsobjekte
Mit dem Windows-Sicherheitsmodell können Sie den Zugriff auf Ereignis-, Mutex-, Semaphor- und wartebare Timerobjekte steuern. Timerwarteschlangen, ineinandergreifende Variablen und kritische Abschnittsobjekte sind nicht sicherungsfähig. Weitere Informationen finden Sie unter Access-Control-Modell.
Sie können einen Sicherheitsdeskriptor für ein Prozessübergreifendes Synchronisierungsobjekt angeben, wenn Sie die Funktionen CreateEvent, CreateMutex, CreateSemaphore oder CreateWaitableTimer aufrufen. Wenn Sie NULL angeben, ruft das Objekt einen Standardsicherheitsdeskriptor ab. Die Zugriffssteuerungslisten (Access-Control Lists, ACLs) im Standardsicherheitsdeskriptor für ein Synchronisierungsobjekt stammen aus dem primären Token oder dem Identitätswechseltoken des Erstellers.
Rufen Sie die Funktionen GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo oder SetSecurityInfo auf, um den Sicherheitsdeskriptor eines Ereignisses, mutex, semaphore oder wartebares Timerobjekt abzurufen oder festzulegen.
Die von CreateEvent, CreateMutex, CreateSemaphore und CreateWaitableTimer zurückgegebenen Handles haben Vollzugriff auf das neue Objekt. Wenn Sie die Funktionen OpenEvent, OpenMutex, OpenSemaphore und OpenWaitableTimer aufrufen, überprüft das System die angeforderten Zugriffsrechte für den Sicherheitsdeskriptor des Objekts.
Die gültigen Zugriffsrechte für die Interprozesssynchronisierungsobjekte umfassen die Standardzugriffsrechte und einige objektspezifische Zugriffsrechte. In der folgenden Tabelle sind die Standardzugriffsrechte aufgeführt, die von allen Objekten verwendet werden.
Wert | Bedeutung |
---|---|
DELETE (0x00010000L) | Erforderlich, um das Objekt zu löschen. |
READ_CONTROL (0x00020000L) | Erforderlich, um Informationen im Sicherheitsdeskriptor für das Objekt zu lesen, ohne dass die Informationen in der SACL enthalten sind. Zum Lesen oder Schreiben der SACL müssen Sie das zugriffsrecht ACCESS_SYSTEM_SECURITY anfordern. Weitere Informationen finden Sie unter SACL-Zugriffsrecht. |
SYNCHRONIZE (0x00100000L) | Das Recht, das Objekt für die Synchronisierung zu verwenden. Dadurch kann ein Thread warten, bis sich das Objekt im signalierten Zustand befindet. |
WRITE_DAC (0x00040000L) | Erforderlich, um die DACL im Sicherheitsdeskriptor für das -Objekt zu ändern. |
WRITE_OWNER (0x00080000L) | Erforderlich, um den Besitzer im Sicherheitsdeskriptor für das Objekt zu ändern. |
In der folgenden Tabelle sind die objektspezifischen Zugriffsrechte für Ereignisobjekte aufgeführt. Diese Rechte werden zusätzlich zu den Standardzugriffsrechten unterstützt.
Wert | Bedeutung |
---|---|
EVENT_ALL_ACCESS (0x1F0003) | Alle möglichen Zugriffsrechte für ein Ereignisobjekt. Verwenden Sie dieses Recht nur, wenn Für Ihre Anwendung ein Zugriff erforderlich ist, der über den von den Standardzugriffsrechten und EVENT_MODIFY_STATE gewährten Zugriff hinausgeht. Wenn Sie dieses Zugriffsrecht verwenden, erhöht sich die Wahrscheinlichkeit, dass Ihre Anwendung von einem Administrator ausgeführt werden muss. |
EVENT_MODIFY_STATE (0x0002) | Ändern Sie den Zustandszugriff, der für die Funktionen SetEvent, ResetEvent und PulseEvent erforderlich ist. |
In der folgenden Tabelle sind die objektspezifischen Zugriffsrechte für Mutex-Objekte aufgeführt. Diese Rechte werden zusätzlich zu den Standardzugriffsrechten unterstützt.
Wert | Bedeutung |
---|---|
MUTEX_ALL_ACCESS (0x1F0001) | Alle möglichen Zugriffsrechte für ein Mutex-Objekt. Verwenden Sie dieses Recht nur, wenn Für Ihre Anwendung ein Zugriff erforderlich ist, der über den von den Standardzugriffsrechten gewährten Zugriff hinausgeht. Wenn Sie dieses Zugriffsrecht verwenden, erhöht sich die Wahrscheinlichkeit, dass Ihre Anwendung von einem Administrator ausgeführt werden muss. |
MUTEX_MODIFY_STATE (0x0001) | Für die zukünftige Verwendung reserviert. |
In der folgenden Tabelle sind die objektspezifischen Zugriffsrechte für Semaphorobjekte aufgeführt. Diese Rechte werden zusätzlich zu den Standardzugriffsrechten unterstützt.
Wert | Bedeutung |
---|---|
SEMAPHORE_ALL_ACCESS (0x1F0003) | Alle möglichen Zugriffsrechte für ein Semaphorobjekt. Verwenden Sie dieses Recht nur, wenn Ihre Anwendung zugriff erfordert, der über den von den Standardzugriffsrechten und SEMAPHORE_MODIFY_STATE gewährten Zugriff hinausgeht. Wenn Sie dieses Zugriffsrecht verwenden, erhöht sich die Wahrscheinlichkeit, dass Ihre Anwendung von einem Administrator ausgeführt werden muss. |
SEMAPHORE_MODIFY_STATE (0x0002) | Ändern Sie den Zustandszugriff, der für die ReleaseSemaphore-Funktion erforderlich ist. |
In der folgenden Tabelle sind die objektspezifischen Zugriffsrechte für wartebare Timerobjekte aufgeführt. Diese Rechte werden zusätzlich zu den Standardzugriffsrechten unterstützt.
Wert | Bedeutung |
---|---|
TIMER_ALL_ACCESS (0x1F0003) | Alle möglichen Zugriffsrechte für ein wartebares Timerobjekt. Verwenden Sie dieses Recht nur, wenn Für Ihre Anwendung ein Zugriff erforderlich ist, der über den von den Standardzugriffsrechten und TIMER_MODIFY_STATE gewährten Zugriff hinausgeht. Wenn Sie dieses Zugriffsrecht verwenden, erhöht sich die Wahrscheinlichkeit, dass Ihre Anwendung von einem Administrator ausgeführt werden muss. |
TIMER_MODIFY_STATE (0x0002) | Ändern Sie den Zustandszugriff, der für die Funktionen SetWaitableTimer und CancelWaitableTimer erforderlich ist. |
TIMER_QUERY_STATE (0x0001) | Für die zukünftige Verwendung reserviert. |
Um die SACL eines Prozesssynchronisierungsobjekts zu lesen oder zu schreiben, müssen Sie das ACCESS_SYSTEM_SECURITY-Zugriffsrecht anfordern. Weitere Informationen finden Sie unter Zugriffssteuerungslisten (Access-Control Lists, ACLs) und SACL-Zugriffsberechtigung.