Threadsicherheit und Zugriffsrechte
Mit Microsoft Windows können Sie den Zugriff auf Threadobjekte steuern. Weitere Informationen zur Sicherheit finden Sie unter Access-Control Model.
Sie können einen Sicherheitsdeskriptor für einen Thread angeben, wenn Sie die Funktionen CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateThreadoder CreateRemoteThread aufrufen. Wenn Sie NULL angeben, ruft der Thread einen Standardsicherheitsdeskriptor ab. Die ACLs in der Standardsicherheitsbeschreibung für einen Thread stammen vom primären Token oder Identitätswechseltoken des Erstellers.
Rufen Sie die GetSecurityInfo-Funktion auf, um den Sicherheitsdeskriptor eines Threads abzurufen. Um den Sicherheitsdeskriptor eines Threads zu ändern, rufen Sie die Funktion SetSecurityInfo auf.
Das von der CreateThread-Funktion zurückgegebene Handle verfügt über THREAD ALL _ _ ACCESS-Zugriff auf das Threadobjekt. Wenn Sie die GetCurrentThread-Funktion aufrufen, gibt das System ein Pseudohandle mit dem maximalen Zugriff zurück, den der Sicherheitsdeskriptor des Threads dem Aufrufer zulässt.
Die gültigen Zugriffsrechte für Threadobjekte umfassen die Standardzugriffsrechte und einige threadspezifische 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 in der Sicherheitsbeschreibung für das Objekt zu lesen, nicht die Informationen in der SACL. Zum Lesen oder Schreiben der SACL müssen Sie das Zugriffsrecht ACCESS _ SYSTEM _ SECURITY anfordern. Weitere Informationen finden Sie unter SACL Access Right. |
| SYNCHRONIZE (0x00100000L) | Das Recht, das Objekt für die Synchronisierung zu verwenden. Dadurch kann ein Thread warten, bis sich das Objekt im signalisierten Zustand befindet. |
| WRITE _ DAC (0x00040000L) | Erforderlich, um die DACL in der Sicherheitsbeschreibung für das Objekt zu ändern. |
| WRITE _ OWNER (0x00080000L) | Erforderlich, um den Besitzer in der Sicherheitsbeschreibung für das Objekt zu ändern. |
In der folgenden Tabelle sind die threadspezifischen Zugriffsrechte aufgeführt.
| Wert | Bedeutung |
|---|---|
| SYNCHRONIZE (0x00100000L) | Aktiviert die Verwendung des Threadhandpunkts in einer der Wartefunktionen. |
| THREAD _ ALL _ ACCESS | Alle möglichen Zugriffsrechte für ein Threadobjekt. Windows Server 2003 und Windows XP: Der Wert des THREAD _ ALL _ ACCESS-Flags wurde auf Windows Server 2008 und Windows Vista erhöht. Wenn eine anwendung, die für Windows Server 2008 und Windows Vista kompiliert wurde, unter Windows Server 2003 oder Windows XP ausgeführt wird, enthält das THREAD _ ALL _ ACCESS-Flag Nicht unterstützte Zugriffsbits, und die Funktion, die dieses Flag anknt, schlägt mit ERROR ACCESS _ _ DENIED fehl. Um dieses Problem zu vermeiden, geben Sie den minimalen Satz von Zugriffsrechten an, die für den Vorgang erforderlich sind. Wenn THREAD _ ALL _ ACCESS verwendet werden muss, legen Sie _ WIN32 _ WINNT auf das Mindestbetriebssystem fest, auf das Ihre Anwendung ausgerichtet ist (z. B. #define _WIN32_WINNT _WIN32_WINNT_WINXP ). Weitere Informationen finden Sie unter Using the Windows Headers. |
| THREAD _ DIREKTER _ IDENTITÄTSWECHSEL (0X0200) | Erforderlich für einen Serverthread, der die Identität eines Clients anwechselt. |
| THREAD _ GET _ CONTEXT (0x0008) | Erforderlich, um den Kontext eines Threads mit GetThreadContext zu lesen. |
| THREAD _ IMPERSONATE (0x0100) | Erforderlich, um die Sicherheitsinformationen eines Threads direkt zu verwenden, ohne sie mithilfe eines Kommunikationsmechanismus aufrufen zu müssen, der Identitätswechseldienste bietet. |
| THREAD _ _ABFRAGEINFORMATIONEN (0x0040) | Erforderlich, um bestimmte Informationen aus dem Threadobjekt zu lesen, z. B. den Exitcode (siehe GetExitCodeThread). |
| THREAD _ ABFRAGEN _ _ EINGESCHRÄNKTER INFORMATIONEN (0X0800) | Erforderlich, um bestimmte Informationen aus den Threadobjekten zu lesen (siehe GetProcessIdOfThread). Einem Handle, das über das Zugriffsrecht THREAD _ QUERY _ INFORMATION verfügt, wird **THREAD QUERY LIMITED INFORMATION automatisch _ _ _ gewährt.**Windows Server 2003 und Windows XP: Dieses Zugriffsrecht wird nicht unterstützt. |
| THREAD _ SET _ CONTEXT (0x0010) | Erforderlich, um den Kontext eines Threads mit setThreadContext zu schreiben. |
| THREAD _ SET _ INFORMATION (0x0020) | Erforderlich, um bestimmte Informationen im Threadobjekt festlegen zu können. |
| THREAD _ FESTLEGEN _ _ EINGESCHRÄNKTER INFORMATIONEN (0X0400) | Erforderlich, um bestimmte Informationen im Threadobjekt festlegen zu können. Einem Handle mit dem Zugriffsrecht THREAD _ SET _ INFORMATION wird **thread set limited information automatisch _ _ _ gewährt.**Windows Server 2003 und Windows XP: Dieses Zugriffsrecht wird nicht unterstützt. |
| THREAD _ SET _ THREAD _ TOKEN (0x0080) | Erforderlich zum Festlegen des Identitätswechseltokens für einen Thread mit setThreadToken. |
| THREAD _ SUSPEND _ RESUME (0x0002) | Erforderlich zum Aussetzen oder Fortsetzen eines Threads (siehe SuspendThread und ResumeThread). |
| THREAD _ TERMINATE (0x0001) | Erforderlich, um einen Thread mit terminateThread zu beenden. |
Sie können das Zugriffsrecht ACCESS _ SYSTEM _ SECURITY für ein Threadobjekt anfordern, wenn Sie die SACL des Objekts lesen oder schreiben möchten. Weitere Informationen finden Sie unter Zugriffssteuerungslisten (ACCESS-Control Lists, ACLs) und SACL Access Right.
Geschützte Prozesse
Geschützte Prozesse verbessern die Unterstützung für digitale Rights Management. Das System schränkt den Zugriff auf geschützte Prozesse und die Threads geschützter Prozesse ein.
Windows Server 2003 und Windows XP: Geschützte Prozesse wurden ab Windows Vista hinzugefügt.
Die folgenden spezifischen Zugriffsrechte sind von einem Prozess auf die Threads eines geschützten Prozesses nicht zulässig:
THREAD _ ALL _ ACCESS
THREAD _ DIRECT _ IMPERSONATION
THREAD _ GET _ CONTEXT
THREAD _ IMPERSONATE
_ _ THREADABFRAGEINFORMATIONEN
_ _ THREADSATZKONTEXT
_ _ THREADSATZINFORMATIONEN
_ _ THREADSATZTOKEN
THREAD _ TERMINATE
Das Recht THREAD QUERY LIMITED _ _ _ INFORMATION wurde eingeführt, um Zugriff auf eine Teilmenge der Informationen zu ermöglichen, die über THREAD QUERY INFORMATION verfügbar _ _ sind.