2010-01-25 13 views
8

Sto tentando di creare un'utilità simile a quella di Microsoft abbandonata Super Fast User Switcher (download), che consente di passare rapidamente all'utente senza passare dalla schermata di benvenuto.Creazione di una sessione di accesso interattiva

ho un'implementazione di lavoro utilizzando il non documentato WinStationConnectW API (insieme a WTSEnumerateSessions), ma può passare solo a un utente che è già connesso.

Come posso creare una sessione di accesso in modo che possa passare a un utente che non ha effettuato l'accesso?
Ho solo bisogno di supportare XP, anche se sarebbe bello lavorare su Vista/Seven. (Il mio codice corrente già fa)

So che questo è possibile perché Switcher Super rapido utente lo fa. (Anche se ha bisogno di un servizio di Windows per farlo)

Sto scrivendo C#, ma posso tradurre qualsiasi risposta in C#.

+0

Hai provato P/Invoking LogonUser? –

+0

@nobugz: 'LogonUser' crea un token utente, non una sessione di accesso. Lo sto già usando per verificare le password. – SLaks

+1

Dato che altri gruppi eseguono lavori simili con cose come Citrix o GotoMyPC, penso che sarebbe fattibile. Tuttavia, potrebbero fare qualcosa nel loro servizio, quindi non sono sicuro. – jcolebrand

risposta

4

Ho risolto questo problema in XP chiamando la funzione InitiateInteractiveLogon non documentata nell'oggetto COM ShellLocalMachine in shgina.dll.

Questo metodo, che può essere chiamato solo con l'account di sistema locale, registrerà un utente alla console. (Impossibile registrare un utente su una sessione RDP)

La versione della DLL inclusa in Windows 7 (e presumibilmente anche Vista) non contiene questo metodo.

+2

Questa funzione è _so_ non documentata che non ha risultati di ricerca di Google. (Google non ha ancora indicizzato questa risposta) http://www.google.com/search?q=shgina.dll+ShellLocalMachine+%2BInitiateInteractiveLogon – SLaks

0

Quali versioni di Windows si desidera scegliere come target?

Credo che non ci sia un modo semplice. Per Windows XP c'è GINA. Per Windows Vista, c'è "Credential Provider".

Inoltre, se si sta prendendo di mira Windows XP, è possibile creare il servizio, che invia sequenze di tasti al desktop WinLogon per accedere come se fosse stato premuto dall'utente sulla tastiera. Questo è stato fatto da RealVNC o UltraVNC, non ricordo. Tuttavia, questo approccio non funziona in Windows Vista.

+0

GINA è fuori questione perché è (per qualche motivo) incompatibile con Cambio rapido utente. – SLaks

Problemi correlati