2009-06-19 11 views
9

Czy istnieje funkcja Win32, którą mogę wywołać, aby wyświetlić okno dialogowe logowania do systemu Windows?Okno dialogowe logowania do aplikacji klienckiej Windows

Np. Eksplorator zespołu programu Internet Explorer i programu Visual Studio wyświetla okno dialogowe poświadczeń podczas uzyskiwania dostępu do witryny - jak wyświetlić to okno dialogowe?

Mam aplikację kliencką Windows .NET, która używa zalogowanej tożsamości użytkownika systemu Windows podczas komunikowania się z usługami internetowymi. Usługi używają tego identyfikatora użytkownika, aby określić, kto dzwoni do usługi i decydować, jakie uprawnienia mają do wyświetlenia.

Chciałbym dodać polecenie, które pozwala bieżącemu użytkownikowi efektywnie wykonać "uruchom jako", gdzie mogą wprowadzić nazwę użytkownika/hasło innego użytkownika, a my aplikacja działa tak jak oni.

Mogłem zbudować niestandardowe okno dialogowe i użyć funkcji LoginUser(), ale wolałbym użyć czegoś "oficjalnego".

+0

Znam tam API dla standardowego okna logowania, bo widziałem inne aplikacje, które go używają. Ale nie mam szczęścia, żeby go znaleźć. Znalazłem kilka odwołań do funkcji API WNetVerifyPassword, ale nie jest to udokumentowane na msdn lub na pinvoke.net. –

Odpowiedz

8

Można użyć funkcji CredUIPromptForCredentials api

Zobacz również here

+0

Świetne znalezisko. P/invoke.net ma to tutaj: http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html. To plus LogonUser wystarczy do zalogowania się, którego potrzebuję. Dzięki! –

+0

Możesz użyć funkcji SecureString do przechowywania hasła, tworząc SecureString i zmieniając parametry metody pinvoke, aby korzystać z IntPtr i wywołując Marshal.SecureStringToBSTR (passwordSecureString) –

0

Myślę, że utknąłeś, tworząc swój własny dialog. Nietrudno sprawić, by wyglądało to oficjalnie.

Powiązane problemy