UDF > WinAPIEx > Dialog >


_WinAPI_ConfirmCredentials

Confirme la validité des informations d'authentification récoltées

#include <WinAPIDlg.au3>
_WinAPI_ConfirmCredentials ( $sTarget, $bConfirm )

Paramètres

$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.

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0, @extended contient le code d'erreur du système.

Remarque

Cette fonction doit être appelée après chaque appel réussi à _WinAPI_ShellUserAuthenticationDlg() avec le flag $CREDUI_FLAGS_EXPECT_CONFIRMATION activé.

En relation

_WinAPI_ShellUserAuthenticationDlg

Voir aussi

Consultez CredUIConfirmCredentials dans la librairie MSDN.

Exemple

#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