Bonjour à tous !
Je cherche à faire un appel vers l'API de Windows pour authentifier un utilisateur sur un domaine : je me suis donc tourné vers la fonction LogonUserA, normalement présente dans advapi32.dll.
Seul souçi, quand j'exécute mon code, WinDev me renvoie l'erreur suivante :
Vous avez appelé la fonction AppelDLL32.
La fonction ' LogonUserA' n'a pas été trouvée dans la DLL advapi32.dll
J'ai essayé avec "kernel32", "kernel32.dll", "advapi32", "advapi32.dll" comme arguments de Appel32 pour le nom de la DLL, rien n'y fait. J'ai toujours la même erreur, alors que DLL Export Viewer m'indique bien que la fonction est dispo dans advapi32.dll.
Une idée ?
Voici le code associé :
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CAuthProvider est une classe PRIVÉ // Constantes API Windows : Logon Type CONSTANT LOGON32_LOGON_INTERACTIVE = 2 CONSTANT LOGON32_LOGON_NETWORK = 3 CONSTANT LOGON32_LOGON_BATCH = 4 CONSTANT LOGON32_LOGON_SERVICE = 5 CONSTANT LOGON32_LOGON_UNLOCK = 7 CONSTANT LOGON32_LOGON_NETWORK_CLEARTEXT = 8 // Constantes API Windows : Logon provider CONSTANT LOGON32_PROVIDER_DEFAULT = 0 CONSTANT LOGON32_PROVIDER_WINNT35 = 1 CONSTANT LOGON32_PROVIDER_WINNT40 = 2 CONSTANT LOGON32_PROVIDER_WINNT50 = 3 FIN PROCEDURE Check(sUserName est une chaîne, sClearPassword est une chaîne) lpszUserName est une chaîne = sUserName // TODO : Paramétrer domaine lpszDomain est une chaîne = "XXXXXX.XX" lpszPassword est une chaîne = sClearPassword phToken est un entier = 0 // Tente de créer un user handle avec les identifiants fournis SI AppelDLL32("advapi32.dll", " LogonUserA" , &lpszUserName, &lpszDomain, &lpszPassword, ... ::LOGON32_LOGON_NETWORK_CLEARTEXT, ::LOGON32_PROVIDER_DEFAULT, &phToken) <> 0 ALORS // Fermeture du handle créé AppelDLL32("kernel32.dll", "CloseHandle" , &phToken) RENVOYER Vrai SINON // Echec de l'auth RENVOYER Faux FIN
Partager