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é :

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
Merci d'avance pour votre aide