2009-06-19 6 views
9

Esiste una funzione Win32 che posso chiamare per mostrare una finestra di dialogo di accesso di Windows?Finestra di dialogo di accesso per l'applicazione client Windows

Ad esempio, Internet Explorer e Visual Studio Team Explorer mostrano entrambe una finestra di dialogo delle credenziali quando si accede a un sito Web: come posso visualizzare tale finestra di dialogo?

Possiedo un'applicazione client Windows .NET che utilizza l'identità utente Windows registrata durante la comunicazione con i servizi Web. I servizi utilizzano quell'ID utente per determinare chi sta chiamando il servizio e decidere quali autorizzazioni dispongono di visualizzare.

Vorrei aggiungere un comando che consente all'utente corrente di eseguire in modo efficace un "run as", in cui possono immettere il nome utente/password di un altro utente e abbiamo l'atto di applicazione come loro.

Potrei creare una finestra di dialogo personalizzata e utilizzare la funzione LoginUser(), ma preferirei usare qualcosa di "ufficiale".

+0

So che c'è un'API per una finestra di login standard, perché ho visto altre applicazioni che lo utilizzano. Ma non ho alcuna fortuna a trovarlo. Ho trovato alcuni riferimenti a una funzione API WNetVerifyPassword, ma non è documentata su msdn o su pinvoke.net. –

risposta

8

È possibile utilizzare la funzione API CredUIPromptForCredentials

Vedi anche here

+0

Grande scoperta. P/invoke.net lo ha qui: http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html. Quel plus LogonUser è sufficiente per fare il login che mi serve. Grazie! –

+0

È possibile utilizzare SecureString per memorizzare la password creando una SecureString e cambiando i parametri del metodo pinvoke per utilizzare un IntPtr e chiamando Marshal.SecureStringToBSTR (passwordSecureString) –

0

Penso che tu sia bloccato a creare la tua finestra di dialogo. Tuttavia, non è difficile renderlo ufficiale.

Problemi correlati