Bonjour tout l'monde.
Un souci concernant les API windows au sein de Windev commence à m'exaspérer sérieusement. En effet, j'ai une application d'archivage de factures qui peut être utilisée par de nombreuses personnes. MAIS, chaque personne possède des droits qui leur sont propres. Donc certaines personnes peuvent avoir accès à tant d'onglets, tandis que d'autres moins d'onglets etc ...
Dernièrement, ces droits étaient définis par un fichier .ini, on m'a demandé de faire en sorte que désormais, ce soit défini par l'Active Directory. Pour cela, je dois récupérer le MemberOf de l'utilisateur (pour connaitre son service au sein de l'entreprise). Ex : pour ma part, mon MemberOf est Informatique, mon domain est le nom de mon entreprise. Mais ce, sans demander le mot de passe à l'utilisateur.
J'ai essayé ça :
Code windev : 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 Workgroup est une chaîne = "" pInfos est un entier système// Pointeur sur les infos retournées par l'API join_status est un entier // Pointeur sur le statut QUAND EXCEPTION DANS // 1er paramètre à 0x00 --> ordinateur local API("Netapi32.dll", "NetGetJoinInformation", 0x00,&pInfos,&join_status) //ou NetGetJoinInformation ou NetWkstaGetInfo // join_status = 0 --> statut inconnu // join_status = 1 --> pas de réseau accessible // join_status = 2 --> groupe de travail // join_status = 3 --> domaine SI join_status=2 ALORS Workgroup = SansEspace(ChaîneRécupère(pInfos,crAdresseUNICODE)) FAIRE RENVOYER "" FIN // Libération de la mémoire réservée par NetGetJoinInformation Workgroup = SansEspace(ChaîneRécupère(pInfos,crAdresseUNICODE)) API("Netapi32.dll", "NetApiBufferFree", &pInfos)
J'ai récupéré ce code sur un forum windev... en vain. Le join_status est toujours à 3. J'ai tenté avec NetWkstaGetInfo mais ça ne fonctionne pas du tout là. Le code est à 0. Y a t'il un moyen avec une API Windows de connaître ce MemberOf ?
Information supplémentaire :
Je vous ai parlé de MemberOf tout à l'heure, voici comme je l'obtiens (mauvaise façon, car utilisation du mot de passe) :
Code windev : 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
38
39
40
41
42
43
44
45
46
47
48 LDAPRAZ() //Paramètres de connexion LDAPSession.Hôte = "nom de mon serveur ad" LDAPSession.Port = 389 LDAPSession.Version = 2 LDAPSession.Utilisateur = "login_user@domain.local" LDAPSession.MotDePasse = "password_user" // Connexion resultat est un booléen = LDAPConnecte("MaSession") SI PAS resultat ALORS Ferme(Fen_Archivage) FIN strDN est une chaîne = LDAPRecherche("MaSession","dc=cerpbn,dc=lan","sAMAccountName=" + LDAPSession.Utilisateur) SI strDN<> "" ALORS // Impossible de lister le DN de connexion // l'utilisateur n'a pas été logué avec le bon mot de passe. Erreur("Le mot de passe de l'utilisateur "+ LDAPSession.Utilisateur + " est erroné.") FIN strInfo est une chaîne strFiltre est une chaîne ="sn= nom_user" strSession est une chaîne = "MaSession" strDN = LDAPRecherche(strSession, "dc=cerpbn,dc=lan", strFiltre) //Lance une recherche dans un serveur LDAP SI PAS ErreurDétectée() ALORS SI strDN <> "" ALORS strListeAttributs est une chaîne = LDAPListeAttribut("MaSession", strDN) strInfo = "Description : " + LDAPValeur(strSession, strDN, "description", 1) + RC strInfo += "Company : " + LDAPValeur(strSession, strDN, "company", 1) + RC strInfo += "MemberOf : " + LDAPValeur(strSession, strDN, "MemberOf", 1) + RC strInfo += "Département : " + LDAPValeur(strSession, strDN, "Department", 1) + RC strInfo += "PrimaryGroupID : " + LDAPValeur(strSession, strDN, "primaryGroupID", 1) + RC strInfo += "UserAccountControl : " + LDAPValeur(strSession, strDN, "userAccountControl", 1) + RC strNom est une chaîne = LDAPValeur(strSession, strDN, "sn", 1) strPrenom est une chaîne = LDAPValeur(strSession, strDN, "givenName", 1) strInfo += "sAMAccountName : "+ LDAPValeur(strSession, strDN, "sAMAccountName", 1) + RC strInfo += "userPrincipalName : "+ LDAPValeur(strSession, strDN, "userPrincipalName", 1) + RC strInfo += "DN:"+ strDN + RC Info("Bonjour " + strPrenom + " " + strNom + RC + strInfo) FIN FIN // Déconnexion LDAPDéconnecte("MaSession")
Partager