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 el parámetro ServerThread no tenía suficientes derechos de acceso 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.

Comentarios

SeImpersonateClientEx se usa para hacer que un subproceso suplanta a un usuario. Se supone que el contexto de seguridad del cliente en ClientContext está actualizado.

Es extremadamente no seguro generar el estado de privilegio de un subproceso de usuario que no es de confianza (tome el subproceso de un usuario y suplantar LocalSystem, por ejemplo). Si un subproceso de usuario que no es de confianza tiene su privilegio, el usuario podría tomar el token de subproceso después de que se haya elevado y subvertido la seguridad de todo el sistema.

En los casos en los que se requiere un estado de privilegio mayor, la tarea se debe enviar a una cola de trabajo donde el subproceso de trabajo del sistema puede controlar la tarea de forma segura. De este modo, no es necesario suplantar.

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

La rutina PsImpersonateClient 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 Value
Cliente mínimo compatible Windows 2000
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient