Pregunta

Estoy intentando crear una utilidad similar a la de Microsoft abandonados súper rápido de usuario Switcher ( descarga ), lo que permite cambio rápido de usuario sin tener que pasar a través de la pantalla de bienvenida.

Tengo una aplicación que trabaja con la API de WinStationConnectW indocumentado (junto con WTSEnumerateSessions), pero sólo puede cambiar a un usuario que ya ha iniciado la sesión.

¿Cómo puedo crear una sesión de inicio de sesión para que pueda cambiar a un usuario que no está conectado?
Sólo tengo que apoyar a XP, aunque sería bueno para trabajar en Vista / Seven. (Mi código actual ya lo hace)

Sé que esto es posible porque súper rápido de usuario Switcher lo hace. (A pesar de que necesita un servicio de Windows para hacerlo)

Estoy escribiendo C #, pero puede traducir cualquier respuesta en C #.

¿Fue útil?

Solución

He resuelto esto en XP llamando a la función InitiateInteractiveLogon indocumentado en el objeto COM ShellLocalMachine en shgina.dll.?

Este método, que sólo puede ser llamado por la cuenta del sistema local, registrará un usuario en la consola. (No puede conectarse a un usuario en una sesión RDP)

La versión de la DLL incluido en Windows 7 (y presumiblemente también Vista) no contiene este método.

Otros consejos

¿Qué versiones de Windows que desea objetivo?

Creo que no hay una forma sencilla. Para Windows XP no es GINA . Para Windows Vista, hay '' Proveedores de credenciales.

Además, si se dirigen a Windows XP, puede crear un servicio, que envía las pulsaciones de teclado en el escritorio WinLogon iniciar la sesión como si el usuario pulsa en el teclado de ellos. Esto fue hecho por RealVNC o UltraVNC, no me acuerdo. Sin embargo, este enfoque no funciona en Windows Vista.

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