Confirme la validité des informations d'authentification récoltées
#include <WinAPIDlg.au3>
_WinAPI_ConfirmCredentials ( $sTarget, $bConfirm )
$sTarget |
La chaîne qui contient le nom de la cible pour les informations d'authentification, généralement un nom de serveur ou de domaine. Cette chaîne doit être la même que celle passée à la fonction _WinAPI_ShellUserAuthenticationDlg(). |
$bConfirm | Indique si les informations d'authentification retournées par la fonction prompt sont des valeurs valides, les valeurs possibles sont: True - Les informations d'authentification sont stockées dans le gestionnaire des informations d'authentification. False - Les informations d'authentification ne sont pas stockés et diverses zones de la mémoire sont nettoyés. |
Succès: | Retourne 1. |
Échec: | Retourne 0 et définit @error <> 0, @extended contient le code d'erreur du système. |
Cette fonction doit être appelée après chaque appel réussi à _WinAPI_ShellUserAuthenticationDlg() avec le flag $CREDUI_FLAGS_EXPECT_CONFIRMATION activé.
_WinAPI_ShellUserAuthenticationDlg
Consultez CredUIConfirmCredentials 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