UDF > WinAPIEx > Dialog >


_WinAPI_ShellUserAuthenticationDlg

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]]]]] )

Paramètres

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

Valeur de retour

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.

Remarque

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.

En relation

_WinAPI_ConfirmCredentials

Voir aussi

Consultez CredUIPromptForCredentials 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