Compartir a través de


Función SeImpersonateClientEx (ntifs.h)

La rutina SeImpersonateClientEx hace que un subproceso suplanta a un usuario.

Sintaxis

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

Parámetros

[in] ClientContext

Puntero al contexto de cliente de seguridad del usuario.

[in, optional] ServerThread

Puntero al subproceso que se va a suplantar al usuario. Si no se especifica, se usa el subproceso que realiza la llamada.

Valor devuelto

SeImpersonateClientEx devuelve un valor NTSTATUS adecuado, como el siguiente:

Código devuelto Descripción
STATUS_SUCCESS
El intento de suplantación se realizó correctamente.
STATUS_ACCESS_DENIED
El subproceso especificado en parámetro ServerThread no tenía derechos de acceso suficientes para suplantar al usuario cuyo contexto de cliente de seguridad se especifica en el parámetro ClientContext.
STATUS_NO_MEMORY
SeImpersonateClientEx encontró un error de asignación de grupo al asignar memoria para la estructura de información de suplantación.

Observaciones

SeImpersonateClientEx se usa para hacer que un subproceso suplantar a un usuario. Se supone que el contexto de seguridad de cliente de clientContext está actualizado.

Es extremadamente seguro aumentar el estado de privilegio de un subproceso de usuario que no es de confianza (tome el subproceso de un usuario y suplanta localSystem, por ejemplo). Si se ha generado un subproceso de usuario que no es de confianza, el usuario podría tomar el token de subproceso después de haber sido elevado y subvertir la seguridad de todo el sistema.

En los casos en los que se requiera un estado de privilegio mayor, la tarea debe enviarse a una cola de trabajo donde la tarea se pueda controlar de forma segura mediante el subproceso de trabajo del sistema. De esta manera no es necesaria ninguna suplantación.

Para finalizar la suplantación del usuario, llame a la rutina SeStopImpersonatingClient.

La rutina psImpersonateClient de se puede usar para hacer que un subproceso de servidor suplantar a un cliente.

Para obtener más información sobre la seguridad y el control de acceso, consulte modelo de seguridad de Windows para desarrolladores de controladores y la documentación sobre estos temas en Windows SDK.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL

Consulte también

psImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

seStopImpersonatingClient