Função SeImpersonateClientEx (ntifs.h)

A rotina SeImpersonateClientEx faz com que um thread represente um usuário.

Sintaxe

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

Parâmetros

[in] ClientContext

Ponteiro para o contexto do cliente de segurança do usuário.

[in, optional] ServerThread

Ponteiro para o thread que deve representar o usuário. Se não for especificado, o thread de chamada será usado.

Retornar valor

SeImpersonateClientEx retorna um valor NTSTATUS apropriado, como o seguinte:

Código de retorno Descrição
STATUS_SUCCESS
A tentativa de representação foi bem-sucedida.
STATUS_ACCESS_DENIED
O thread especificado no parâmetro ServerThread não tinha direitos de acesso suficientes para representar o usuário cujo contexto de cliente de segurança é especificado no parâmetro ClientContext .
STATUS_NO_MEMORY
SeImpersonateClientEx encontrou uma falha de alocação de pool ao alocar memória para a estrutura de informações de representação.

Comentários

SeImpersonateClientEx é usado para fazer com que um thread represente um usuário. O contexto de segurança do cliente em ClientContext é considerado atualizado.

Não é seguro aumentar o estado de privilégio de um thread de usuário não confiável (pegar o thread de um usuário e representar LocalSystem, por exemplo). Se um thread de usuário não confiável tiver seu privilégio gerado, o usuário poderá pegar o token de thread depois de ter sido elevado e subverter a segurança de todo o sistema.

Nos casos em que um estado de privilégio mais alto é necessário, a tarefa deve ser enviada para uma fila de trabalho em que a tarefa pode ser tratada com segurança pelo thread de trabalho do sistema. Dessa forma, nenhuma representação é necessária.

Para encerrar a representação do usuário, chame a rotina SeStopImpersonatingClient .

A rotina PsImpersonateClient pode ser usada para fazer com que um thread de servidor represente um cliente.

Para obter mais informações sobre segurança e controle de acesso, consulte Modelo de segurança do Windows para desenvolvedores de driver e a documentação sobre esses tópicos no SDK do Windows.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Confira também

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient