Petits suppléménts "gratuits"... n'utilise pas LDAP mais peuvent te servir
1° CONNAITRE LE NOM DU DOMAINE -------------------------------------------------------------- FUNCTION LDAPGetDomainName() NomDuDomaine est une chaîne = "" nCONTROLLER_INFO est un entier sans signe sur 8 octets sDomainControllerName est une chaîne ASCIIZ sur 1024 ="" dwRes est un entier sur 8 octets i, ErrorCode sont des entiers
WHEN EXCEPTION IN ErrorCode = API(NomDllNet, "DsGetDcNameA", 0x00, 0x00, 0x00, 0x00, 0 , &nCONTROLLER_INFO) IF ErrorCode=ERROR_SUCCESS THEN Transfert(&dwRes, nCONTROLLER_INFO, 4) Transfert(&sDomainControllerName, dwRes, 1023) ELSE RENVOYER "" END DO RENVOYER "" END i = Position(sDomainControllerName,".") IF i>0 THEN NomDuDomaine = sDomainControllerName[[ i+1 A ]] ELSE NomDuDomaine = "" END
RENVOYER NomDuDomaine
2° CONNAITRE LES SERVEURS D'UN DOMAINE (Windows) -------------------------------------------------------------- FUNCTION LDAPGetAllDomainControler() DomainName est une chaîne ASCIIZ sur 512 Retry est un entier RetGetDcContext est un entier = 0 RetFunction est un entier = 0 SockAddressCount, SockAddresses, DnsHostName sont des entier sans signe sur 8 octets SockAddressCount=0x00; SockAddresses=0x00; DnsHostName=0x00 ServeurName est une chaîne ASCIIZ sur 256 ListeDesServeur est une chaîne = ""
Retry = 0 DomainName = LDAPGetDomainName() WHILE DomainName="" AND Retry<10 DomainName = LDAPGetDomainName() Retry++ END IF DomainName="" THEN RENVOYER ""
RetFunction = API(NomDllNet, "DsGetDcOpen", &DomainName, 0x2, 0x00, 0x00, 0x00, 0, &RetGetDcContext ) IF RetFunction = 0 THEN WHILE RetFunction = 0 RetFunction = API(NomDllNet,"DsGetDcNext", RetGetDcContext, &SockAddressCount, &SockAddresses, &DnsHostName) IF RetFunction = 0 THEN IF SockAddressCount>0 THEN Transfert(&ServeurName,DnsHostName,255) IF ListeDesServeur<>"" THEN ListeDesServeur += TAB ListeDesServeur += Remplace(ServeurName,"."+DomainName,"") END END END API(NomDllNet, "DsGetDcClose",RetGetDcContext) END
RENVOYER ListeDesServeur
3° CONNAITRE LE PDC DU DOMAINE -------------------------------------------------------------- // Renvoie le nom du PDC du domaine
FUNCTION LDAPGetNameOfPDC() Retry est un entier Domain est une chaîne ASCIIZ sur 256 sDomainControllerName est une chaîne ASCIIZ sur 1024 ="" nCONTROLLER_INFO est un entier sans signe sur 8 octets dwRes est un entier sur 8 octets
Retry = 0 Domain = LDAPGetDomainName() WHILE Domain="" AND Retry<10 Domain = LDAPGetDomainName() Retry++ END IF Domain="" THEN RENVOYER ""
WHEN EXCEPTION IN API(NomDllNet, "DsGetDcNameA", 0x00, &Domain, 0x00, 0x00, DS_PDC_REQUIRED+DS_RETURN_FLAT_NAME , &nCONTROLLER_INFO) Transfert(&dwRes, nCONTROLLER_INFO, 4) Transfert(&sDomainControllerName, dwRes, 1023) DO RENVOYER "" END
API(NomDllNet, "NetApiBufferFree", &nCONTROLLER_INFO) sDomainControllerName = Remplace(sDomainControllerName,"\","")
RENVOYER sDomainControllerName |