Pregunta

I escribir una aplicación Windows de C ++ (A), que utiliza LogonUser, LoadUserProfile y ImpersonateLoggedOnUser para obtener los derechos de otro usuario (Y). Es decir, la A comienza con el usuario que ha iniciado sesión en la estación de trabajo (X). Si el usuario quiere elevar sus derechos que sólo puede presionar un botón y de inicio de sesión como otro usuario sin tener que conectarse a sí mismo fuera de las ventanas y de nuevo.

La situación actual es (de acuerdo con los valores de retorno de las funciones): funciona LogonUser, LoadUserProfile funciona y ImpersonateLoggedOnUser funciona tan bien

.

Después de la suplantación de empezar otro proceso. Este proceso es una aplicación (B) que necesita un control OCX. Esta falla y la aplicación me dice que el archivo .oxc no está instalado correctamente.

La cosa es, si comienzo B directamente como el usuario que ha iniciado sesión en la máquina (X), funciona. Si comienzo B directamente como el usuario (Y) a la que quiero elevar mis derechos usando A, funciona.

Si estoy conectado como (X) y seleccione "Ejecutar como" (Y) en el explorador, funciona!

¿Usted sabe qué pasos tengo que hacer para hacer lo mismo que el "Ejecutar como" de diálogo de las ventanas?

¿Fue útil?

Solución 2

Gracias a todos por su ayuda. El siguiente fue capaz de resolver el problema para mí:
Comienzo el proceso deseado usando CreateProcessWithLogonW () . Para conseguir que la función de funcionar correctamente tengo que RevertToSelf () antes de que llame y haga la suplantación de nuevo después.

Así que la secuencia es ahora:

LogonUser()
LoadUserProfile()
ImpersonateLoggedOnUser()
// work with the app
RevertToSelf()
CreateProcessWithLogonW()
// do the impersonation stuff again

Otros consejos

No estoy seguro, pero parece que no es suficiente suplantación - suplantación se refiere únicamente al procedimiento (A), en lugar de tratar con CreateProcess ProcessAttributes / ThreadAttributes establece explícitamente en usuario suplantado de ACL de Windows'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top