2008-09-26 20 views
8

¿Es posible suplantar a un usuario sin proporcionar el nombre de usuario/contraseña? Básicamente, me gustaría obtener el CSIDL_LOCAL_APPDATA para un usuario (no el actual) usando la función ShGetFolderPath(). Todo lo que tengo actualmente es un SID para ese usuario.¿Es posible suplantar a un usuario sin iniciar sesión?

Respuesta

6

No, tiene que llamar a la API de Win32 función LogonUser para recuperar el token de la cuenta de Windows para que pueda suplantar.

+0

Hmm, eso explica por qué no puedo hacer que funcione correctamente ... ¿Hay alguna otra manera de conseguir ese camino? Gracias. – dennisV

7

Puede suplantar a un usuario sin proporcionar una contraseña llamando a ZwCreateToken. Consulte la función CreatePureUserToken en este artículo: GUI-Based RunAsEx Debe estar ejecutándose como administrador (o LocalSystem) para que esto funcione.

Otra técnica es utilizar los paquetes de subautenticación de Windows. Esto le permite anular la autenticación integrada de Windows y permitir que LogonUser tenga éxito incluso si no se proporcionó una contraseña. Vea esto KB article.

Cuestiones relacionadas