Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Microsoft Windows permite controlar o acesso a objetos de thread. Para obter mais informações sobre segurança, consulte Access-Control Model.
Você pode especificar um descritor de segurança para um thread ao chamar o CreateProcess, CreateProcessAsUser, CreateProcessWithLogonWCreateThreadou função CreateRemoteThread. Se você especificar NULL , o thread obterá um descritor de segurança padrão. As ACLs no descritor de segurança padrão para um thread vêm do token principal ou de representação do criador.
Para recuperar o descritor de segurança de um thread, chame a função GetSecurityInfo. Para alterar o descritor de segurança de um thread, chame a funçãoSetSecurityInfo.
O identificador retornado pela função CreateThread tem acesso THREAD_ALL_ACCESS ao objeto thread. Quando você chama o função GetCurrentThread, o sistema retorna um pseudoidentificador com o acesso máximo que o descritor de segurança do thread permite ao chamador.
Os direitos de acesso válidos para objetos de thread incluem o de direitos de acesso padrão e alguns direitos de acesso específicos de thread. A tabela a seguir lista os direitos de acesso padrão usados por todos os objetos.
| Valor | Significado |
|---|---|
| EXCLUIR (0x00010000L) | Necessário para excluir o objeto. |
| READ_CONTROL (0x00020000L) | Necessário para ler informações no descritor de segurança para o objeto, não incluindo as informações na SACL. Para ler ou escrever a SACL, você deve solicitar o direito de acesso ACCESS_SYSTEM_SECURITY. Para obter mais informações, consulte SACL Access Right. |
| SINCRONIZAR (0x00100000L) | O direito de usar o objeto para sincronização. Isso permite que um thread aguarde até que o objeto esteja no estado sinalizado. |
| WRITE_DAC (0x00040000L) | Necessário para modificar a DACL no descritor de segurança do objeto. |
| WRITE_OWNER (0x00080000L) | Necessário para alterar o proprietário no descritor de segurança para o objeto. |
A tabela a seguir lista os direitos de acesso específicos do thread.
| Valor | Significado |
|---|---|
| SINCRONIZAR (0x00100000L) | Permite o uso da alça de thread em qualquer uma das funções de espera de . |
| THREAD_ALL_ACCESS | Todos os direitos de acesso possíveis para um objeto de thread.Windows Server 2003 e Windows XP: O valor do sinalizador THREAD_ALL_ACCESS aumentou no Windows Server 2008 e no Windows Vista. Se um aplicativo compilado para Windows Server 2008 e Windows Vista for executado no Windows Server 2003 ou Windows XP, o sinalizador THREAD_ALL_ACCESS conterá bits de acesso que não são suportados e a função que especifica esse sinalizador falhará com ERROR_ACCESS_DENIED. Para evitar esse problema, especifique o conjunto mínimo de direitos de acesso necessários para a operação. Se THREAD_ALL_ACCESS precisar ser usado, defina _WIN32_WINNT para o sistema operacional mínimo direcionado pelo seu aplicativo (por exemplo, #define _WIN32_WINNT _WIN32_WINNT_WINXP). Para obter mais informações, consulte Usando os cabeçalhos do Windows. |
| THREAD_DIRECT_IMPERSONATION (0x0200) | Necessário para um thread de servidor que representa um cliente. |
| THREAD_GET_CONTEXT (0x0008) | Necessário para ler o contexto de um thread usando GetThreadContext. |
| THREAD_IMPERSONATE (0x0100) | Necessário para usar as informações de segurança de um thread diretamente sem chamá-lo usando um mecanismo de comunicação que fornece serviços de representação. |
| THREAD_QUERY_INFORMATION (0x0040) | Necessário para ler determinadas informações do objeto thread, como o código de saída (consulte GetExitCodeThread). |
| THREAD_QUERY_LIMITED_INFORMATION (0x0800) | Necessário para ler determinadas informações dos objetos de thread (consulte GetProcessIdOfThread). Um identificador que tenha o direito de acesso THREAD_QUERY_INFORMATION é concedido automaticamente THREAD_QUERY_LIMITED_INFORMATION.Windows Server 2003 e Windows XP: Este direito de acesso não é suportado. |
| THREAD_SET_CONTEXT (0x0010) | Necessário para escrever o contexto de um thread usando SetThreadContext. |
| THREAD_SET_INFORMATION (0x0020) | Necessário para definir determinadas informações no objeto thread. |
| THREAD_SET_LIMITED_INFORMATION (0x0400) | Necessário para definir determinadas informações no objeto thread. Um identificador que tenha o direito de acesso THREAD_SET_INFORMATION recebe automaticamente THREAD_SET_LIMITED_INFORMATION.Windows Server 2003 e Windows XP: Este direito de acesso não é suportado. |
| THREAD_SET_THREAD_TOKEN (0x0080) | Necessário para definir o token de representação para um thread usando SetThreadToken. |
| THREAD_SUSPEND_RESUME (0x0002) | Necessário para suspender ou retomar um thread (consulte SuspendThread e ResumeThread). |
| THREAD_TERMINATE (0x0001) | Necessário para encerrar um thread usando TerminateThread. |
Você pode solicitar o direito de acesso ACCESS_SYSTEM_SECURITY a um objeto de thread se quiser ler ou gravar a SACL do objeto. Para obter mais informações, consulte Listas de Access-Control (ACLs) e de Direito de Acesso SACL.
Processos protegidos
Processos protegidos melhorar o suporte para a Gestão de Direitos Digitais. O sistema restringe o acesso a processos protegidos e aos threads de processos protegidos.
Windows Server 2003 e Windows XP: processos protegidos foram adicionados a partir do Windows Vista.
Os seguintes direitos de acesso específicos não são permitidos de um processo para os threads de um processo protegido:
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
O direito THREAD_QUERY_LIMITED_INFORMATION foi introduzido para facultar o acesso a um subconjunto das informações disponíveis através do THREAD_QUERY_INFORMATION.