Sdílet prostřednictvím


Zabezpečení vláken a přístupová práva

Systém Microsoft Windows umožňuje řídit přístup k objektům vláken. Další informace o zabezpečení naleznete v tématu Access-Control Model.

Při volání CreateProcessCreateProcessAsUser, CreateProcessWithLogonW, CreateThreadnebo CreateRemoteThread zadat popis ovač zabezpečení pro vlákno. Pokud zadáte NULL, vlákno získá výchozí popisovač zabezpečení. Seznamy ACL ve výchozím popisovači zabezpečení pro vlákno pocházejí z primárního tokenu nebo tokenu zosobnění tvůrce.

Chcete-li načíst popisovač zabezpečení vlákna, zavolejte funkci GetSecurityInfo. Pokud chcete změnit popisovač zabezpečení vlákna, zavolejte funkci SetSecurityInfo.

Popisovač vrácený funkcí CreateThreadTHREAD_ALL_ACCESS přístup k objektu vlákna. Když zavoláte funkci GetCurrentThread, vrátí systém pseudohandle s maximálním přístupem, který popisovač zabezpečení vlákna umožňuje volajícímu.

Platná přístupová práva pro objekty vlákna zahrnují standardní přístupová práva a některá přístupová práva specifická pro vlákna. Následující tabulka uvádí standardní přístupová práva používaná všemi objekty.

Hodnota Význam
DELETE (0x00010000L) Vyžaduje se k odstranění objektu.
READ_CONTROL (0x0002000L) Vyžadováno ke čtení informací v popisovači zabezpečení objektu, nikoli informace v SACL. Chcete-li číst nebo zapisovat SACL, musíte požádat ACCESS_SYSTEM_SECURITY přístupové právo. Další informace naleznete v tématu SACL Access Right.
SYNCHRONIZOVAT (0x0010000L) Právo použít objekt pro synchronizaci. To umožňuje vláknu čekat, dokud objekt není v signalizačním stavu.
WRITE_DAC (0x00040000L) Vyžaduje se ke změně seznamu DACL v popisovači zabezpečení objektu.
WRITE_OWNER (0x00080000L) Vyžaduje se ke změně vlastníka v popisovači zabezpečení objektu.

 

Následující tabulka uvádí přístupová práva specifická pro vlákno.

Hodnota Význam
SYNCHRONIZOVAT (0x0010000L) Umožňuje použití úchytu vlákna v některé z wait funkcí.
THREAD_ALL_ACCESS Všechna možná přístupová práva pro objekt vlákna.Windows Server 2003 a Windows XP: Hodnota příznaku THREAD_ALL_ACCESS zvýšena v systémech Windows Server 2008 a Windows Vista. Pokud je aplikace zkompilovaná pro systém Windows Server 2008 a Windows Vista spuštěna v systému Windows Server 2003 nebo Windows XP, THREAD_ALL_ACCESS příznak obsahuje přístupové bity, které nejsou podporovány a funkce určující tento příznak selže s ERROR_ACCESS_DENIED. Chcete-li se tomuto problému vyhnout, zadejte minimální sadu přístupových práv požadovaných pro operaci. Pokud je nutné použít THREAD_ALL_ACCESS, nastavte _WIN32_WINNT na minimální operační systém, na který vaše aplikace cílí (například #define _WIN32_WINNT _WIN32_WINNT_WINXP). Další informace naleznete v tématu Použití záhlaví systému Windows.
THREAD_DIRECT_IMPERSONATION (0x0200) Vyžaduje se pro vlákno serveru, které zosobňuje klienta.
THREAD_GET_CONTEXT (0x0008) Vyžaduje se ke čtení kontextu vlákna pomocí GetThreadContext.
THREAD_IMPERSONATE (0x0100) Vyžaduje se, aby informace o zabezpečení vlákna používaly přímo bez volání pomocí komunikačního mechanismu, který poskytuje služby zosobnění.
THREAD_QUERY_INFORMATION (0x0040) Vyžaduje se ke čtení určitých informací z objektu vlákna, například ukončovací kód (viz GetExitCodeThread).
THREAD_QUERY_LIMITED_INFORMATION (0x0800) Vyžaduje se ke čtení určitých informací z objektů vlákna (viz GetProcessIdOfThread). Popisovač, který má THREAD_QUERY_INFORMATION přístupové právo, se automaticky udělí THREAD_QUERY_LIMITED_INFORMATION.Windows Server 2003 a Windows XP: Toto přístupové právo není podporováno.
THREAD_SET_CONTEXT (0x0010) Vyžaduje se k zápisu kontextu vlákna pomocí SetThreadContext.
THREAD_SET_INFORMATION (0x0020) Vyžaduje se k nastavení určitých informací v objektu vlákna.
THREAD_SET_LIMITED_INFORMATION (0x0400) Vyžaduje se k nastavení určitých informací v objektu vlákna. Popisovač, který má THREAD_SET_INFORMATION přístupové právo, se automaticky udělí THREAD_SET_LIMITED_INFORMATION.Windows Server 2003 a Windows XP: Toto přístupové právo není podporováno.
THREAD_SET_THREAD_TOKEN (0x0080) Vyžaduje se k nastavení tokenu zosobnění pro vlákno pomocí SetThreadToken.
THREAD_SUSPEND_RESUME (0x0002) Vyžadováno pro pozastavení nebo obnovení vlákna (viz SuspendThread a ResumeThread).
THREAD_TERMINATE (0x0001) Požadováno k ukončení vlákna pomocí TerminateThread.

 

Pokud chcete číst nebo zapisovat SACL objektu objektu, můžete požádat ACCESS_SYSTEM_SECURITY o přístup k objektu vlákna. Další informace naleznete v tématu Access-Control Seznamy (ACL) a SACL Access Right.

Chráněné procesy

chráněných procesů zvýšit podporu pro správu digitálních práv. Systém omezuje přístup k chráněným procesům a vláknům chráněných procesů.

Windows Server 2003 a Windows XP: chráněné procesy byly přidány od systému Windows Vista.

Následující konkrétní přístupová práva nejsou povolena z procesu do vláken chráněného procesu:

THREAD_ALL_ACCESS
THREAD_DIRECT_IMPERSONATION
THREAD_GET_CONTEXT
THREAD_IMPERSONATE
THREAD_QUERY_INFORMATION
THREAD_SET_CONTEXT
THREAD_SET_INFORMATION
THREAD_SET_TOKEN
THREAD_TERMINATE

Právo THREAD_QUERY_LIMITED_INFORMATION bylo zavedeno k poskytování přístupu k podmnožině informací dostupných prostřednictvím THREAD_QUERY_INFORMATION.