2009-06-19 13 views
9

Y at-il une fonction Win32 que je peux appeler pour afficher une boîte de dialogue de connexion Windows? Par exemple, Internet Explorer et Team Explorer de Visual Studio affichent tous deux une boîte de dialogue d'identification lors de l'accès à un site Web. Comment puis-je afficher cette boîte de dialogue?Boîte de dialogue de connexion pour l'application client Windows

J'ai une application client .NET Windows qui utilise l'identité de l'utilisateur Windows connecté lors de la communication avec les services Web. Les services utilisent cet ID utilisateur pour déterminer qui appelle le service et décider de ce qu'ils ont les autorisations de voir.

Je voudrais ajouter une commande qui permet à l'utilisateur courant de faire efficacement un "exécuter comme", où ils peuvent entrer le nom d'utilisateur/mot de passe d'un autre utilisateur et nous avons l'application agir comme eux.

Je pourrais construire une boîte de dialogue personnalisée et utiliser la fonction LoginUser(), mais je préfère utiliser quelque chose de "officiel".

+0

Je sais qu'il ya une API pour une boîte de dialogue standard de connexion, parce que je l'ai vu d'autres applications qui l'utilisent. Mais je n'ai pas de chance de le trouver. J'ai trouvé quelques références à une fonction API WNetVerifyPassword, mais ce n'est pas documenté sur msdn ou sur pinvoke.net. –

Répondre

8

Vous pouvez utiliser la fonction API CredUIPromptForCredentials

Voir aussi here

+0

Grande trouvaille. P/invoke.net l'a ici: http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html. Cela plus LogonUser est suffisant pour faire le login dont j'ai besoin. Merci! –

+0

Vous pouvez utiliser SecureString pour stocker le mot de passe en créant une SecureString et en modifiant les paramètres de la méthode pinvoke pour utiliser un IntPtr, et en appelant Marshal.SecureStringToBSTR (passwordSecureString) –

0

Je pense que vous êtes coincé en créant votre propre boîte de dialogue. Ce n'est pas si difficile de le rendre officiel cependant.

Questions connexes