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