Cr�e et affiche une bo�te de dialogue configurable qui accepte les informations d'identification d'un utilisateur
#include <WinAPIDlg.au3>
_WinAPI_ShellUserAuthenticationDlg ( $sCaption, $sMessage, $sUser, $sPassword, $sTarget [, $iFlags = 0 [, $iError = 0 [, $bSave = False [, $hBitmap = 0 [, $hParent = 0]]]]] )
$sCaption | Le titre de la bo�te de dialogue. |
$sMessage | Un bref message � afficher dans la bo�te de dialogue. |
$sUser | Le nom d'utilisateur pour remplir les champs d'informations d'identification dans la bo�te de dialogue. Pour les utilisateurs de domaine, la cha�ne doit �tre dans le format suivant (si le domaine n'est pas sp�cifi�, la cha�ne $sTarget est utilis� comme domaine): NomDomaine\NomUtilisateur |
$sPassword | Le mot de passe initial. |
$sTarget | Le nom de la cible, g�n�ralement un nom de serveur. Ce param�tre est utilis� pour identifier les informations de la cible lors du stockage et de la r�cup�ration des informations d'identification. |
$iFlags | [optionnel] Les flags qui sp�cifie le comportement de cette fonction. Il peut �tre une combinaison OR de bits et de 0 ou plusieurs des valeurs suivantes: $CREDUI_FLAGS_ALWAYS_SHOW_UI $CREDUI_FLAGS_COMPLETE_USERNAME $CREDUI_FLAGS_DO_NOT_PERSIST $CREDUI_FLAGS_EXCLUDE_CERTIFICATES $CREDUI_FLAGS_EXPECT_CONFIRMATION $CREDUI_FLAGS_GENERIC_CREDENTIALS $CREDUI_FLAGS_INCORRECT_PASSWORD $CREDUI_FLAGS_KEEP_USERNAME $CREDUI_FLAGS_PASSWORD_ONLY_OK $CREDUI_FLAGS_PERSIST $CREDUI_FLAGS_REQUEST_ADMINISTRATOR $CREDUI_FLAGS_REQUIRE_CERTIFICATE $CREDUI_FLAGS_REQUIRE_SMARTCARD $CREDUI_FLAGS_SERVER_CREDENTIAL $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX $CREDUI_FLAGS_USERNAME_TARGET_CREDENTIALS $CREDUI_FLAGS_VALIDATE_USERNAME |
$iError | [optionnel] Le code d'erreur syst�me qui d�finit la raison pour laquelle la bo�te de dialogue d'identification est n�cessaire. |
$bSave | [optionnel] Indique si la case � cocher "Save" est s�lectionn�e dans la bo�te de dialogue (ce qui n'a de sens que si le flag $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX est activ�), les valeurs valides sont: True - S�lectionn�. False - D�s�lectionn� (par d�faut). |
$hBitmap | [optionnel] Le handle de bitmap � afficher dans la bo�te de dialogue. Si ce param�tre est 0, le bitmap par d�faut est utilis�. La taille du bitmap est limit�e � 320x60 pixels. |
$hParent | [optionnel] La bo�te de dialogue est modale par rapport � la fen�tre parent. Si ce param�tre est 0, le bureau est la fen�tre parent de la bo�te de dialogue. |
Succ�s: | Retourne le tableau contenant les informations suivantes: [0] - Le nom d'utilisateur, y compris le nom de domaine (si n�cessaire). [1] - Le mot de passe. [2] - L'�tat de la case � cocher "Save". |
�chec: | D�finit @error <> 0. Si la fonction est annul�e par l'utilisateur, @extended contiendra le code d'erreur syst�me ERROR_CANCELLED (1223). Toute autre valeur indique que la fonction a �chou� au chargement. |
Les informations d'authentification sont stock�es dans le gestionnaire des authentifications bas� sur le nom de la cible. Chaque nom de la cible est stock�e, autant que possible, sans entrer en collision avec des authentifications d�j� stock�s dans le gestionnaire des authentifications. Parce que les informations d'authentifications sont stock�es par nom de la cible, un utilisateur particulier peut avoir une authentification par cible stock� dans le gestionnaire des authentifications.
Consultez CredUIPromptForCredentials dans la librairie MSDN.
#include <APIDlgConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIDlg.au3> #include <WinAPIRes.au3> #include <Crypt.au3> Global $hBitmap = _WinAPI_LoadImage(0, @ScriptDir & '\Extras\Authentication.bmp', $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE) Global $aData[3] = ['', '', 0] Global Const $sKey = 'DC7E430A1C88' ; quelconque ;Global $sPassword = '123' ;Global $sPasswordCrypted = StringEncrypt(True, $sKey, $sPassword) ; r�sultat='0x2544B2BA9A0E5F9CAAEE9776' ; Boucle tant que le login ou le password est incorrect GetAuthentication($aData) While (StringCompare($aData[0], 'AutoIt', 1) <> 0) Or (StringCompare(StringEncrypt(False, '0x2544B2BA9A0E5F9CAAEE9776', $aData[1]), $sKey) <> 0) If $aData[2] <> 0 Then _WinAPI_ConfirmCredentials('MyScript', 0) MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Vous avec tap� un login ou un mot de passe incorrect, ils doivent �tre "AutoIt" et "123".') GetAuthentication($aData) WEnd ; Enregistre le login et le mot de passe si l'utilisateur a coch� la case If $aData[2] <> 0 Then _WinAPI_ConfirmCredentials('MyScript', 1) MsgBox($MB_SYSTEMMODAL, '', 'Authentification r�ussie!') Func GetAuthentication(ByRef $aData) $aData = _WinAPI_ShellUserAuthenticationDlg('Authentification', _ 'Pour continuer, tapez le login et le mot de passe, puis cliquez sur OK.', _ $aData[0], _ ; login pr�c�dent $aData[1], _ ; mot de passe pr�c�dent 'MyScript', _ BitOR($CREDUI_FLAGS_ALWAYS_SHOW_UI, $CREDUI_FLAGS_EXPECT_CONFIRMATION, $CREDUI_FLAGS_GENERIC_CREDENTIALS, $CREDUI_FLAGS_SHOW_SAVE_CHECK_BOX), _ 0, _ $aData[2], _ ; 1 si l'utilisateur a coch� pr�c�demment la case 'M�moriser mon mot de passe', 0 sinon $hBitmap) If @error Then Exit ; L'utilisateur a cliqu� sur Annuler EndFunc Func StringEncrypt($bEncrypt, $sData, $sPassword) ; Encrypte ou d�crypte selon $bEncrypt Local $sRet _Crypt_Startup() ; D�marre l'UDF Crypt $sRet = ($bEncrypt ? _Crypt_EncryptData($sData, $sPassword, $CALG_RC4) : BinaryToString(_Crypt_DecryptData($sData, $sPassword, $CALG_RC4))) _Crypt_Shutdown() ; Arr�te l'UDF Crypt. Return $sRet EndFunc ;==>StringEncrypt