|
Comment lister les contrôleurs de domaine |
Started by p.poinsignon, Apr., 07 2006 9:18 AM - 3 replies |
| |
| | | |
|
| |
Posted on April, 07 2006 - 9:18 AM |
Bonjour à tous, petite question que je me pose pour une appli que je suis en train de développer:
Existe t'il un moyen pour récupérer la liste des contrôleurs de domaine sur un réseau?
Si quelqu'un en a déjà eu besoin, la solution m'intéresse!! Merci d'avance.
Lepatou |
| |
| |
| | | |
|
| | |
| |
Posted on April, 07 2006 - 1:31 PM |
Bonjour sur un réseau W2KPro multisite multi controlleur j'utilise ces deux fonctions mais je ne peut pas tester dans autre environement N'oublie pas de me donner un compte rendu Merci
CONSTANT ERROR_SUCCESS = 0 DS_NOTIFY_AFTER_SITE_RECORDS = 0x02 // Return ERROR_FILEMARK_DETECTED after all ERROR_NO_MORE_ITEMS = 259 ERROR_FILEMARK_DETECTED = 1101 END
//**************************************************************** // Renvoie le nom du domaine sur lequel on est connecté en format exemple : toto.com //**************************************************************** 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
//************************************************************************* // Renvoie une chaine séparateur TAB de tous les contrôleurs de domaine detecté sur le domaine // Uniquement pour le site en cours ? //************************************************************************* 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 = "" SiteName est une chaîne ASCIIZ sur 512 = "" DcFlags est un entier sans signe sur 4 octets
// Prend le nom du domaine sur lequel on est connecté Retry = 0 DomainName = LDAPGetDomainName() WHILE DomainName="" AND Retry<10 DomainName = LDAPGetDomainName() Retry++ END
// Opens a new domain controller enumeration operation DcFlags = DS_FORCE_REDISCOVERY RetFunction = API(NomDllNet, "DsGetDcOpen", &DomainName, DS_NOTIFY_AFTER_SITE_RECORDS, 0x00, 0x00, 0x00, DcFlags, &RetGetDcContext )
IF RetFunction = 0 THEN // Good WHILE RetFunction = 0 // RetFunction = API(NomDllNet,"DsGetDcNext", RetGetDcContext, &SockAddressCount, &SockAddresses, &DnsHostName) // IF RetFunction = 0 THEN IF SockAddressCount>0 THEN Transfert(&ServeurName,DnsHostName,255) API(NomDllNet,"NetApiBufferFree",&DnsHostName) IF ListeDesServeur<>"" THEN ListeDesServeur += TAB ListeDesServeur += Remplace(ServeurName,"."+DomainName,"") END ELSE IF EnModeTest() THEN IF RetFunction = ERROR_NO_MORE_ITEMS THEN Erreur("ERROR_NO_MORE_ITEMS") IF RetFunction = ERROR_FILEMARK_DETECTED THEN Erreur("ERROR_FILEMARK_DETECTED") END SORTIR END END
// Closes a domain controller enumeration operation. API(NomDllNet, "DsGetDcClose",RetGetDcContext) END
RENVOYER ListeDesServeur
"Lepatou" <p.poinsignon@caisse-epargne.nc> a écrit dans le message de news: 4435f21d$1@news.pcsoft.fr...
Bonjour à tous, petite question que je me pose pour une appli que je suis en train de développer:
Existe t'il un moyen pour récupérer la liste des contrôleurs de domaine sur un réseau?
Si quelqu'un en a déjà eu besoin, la solution m'intéresse!! Merci d'avance.
Lepatou
|
| |
| |
| | | |
|
| | |
| |
Posted on April, 18 2006 - 12:56 PM |
Merci beaucoup, je n'ai pas encore testé mais on est sur une configuration qui est la même que toi donc ça devrait être ok, je te tiens au courant, merci! |
| |
| |
| | | |
|
| | |
| |
Posted on April, 19 2006 - 9:45 AM |
D'après moi, dans les fonctions proposées plus haut, tu ne m'a pas tout mis car il manque des déclarations, Windev me met qu'il ne connait pas certaines variables (ou constantes??)
ex: NomDllNet, DS_FORCE_REDISCOVERY...
En regardant d'autres de tes posts j'ai réussi à trouver certaines déclarations pour faire fonctionner LDAPGetDomainName() mais la constante DS_FORCE_REDISCOVERY me pose toujours problème pour la fonction LDAPGetAllDomainControler().
Patrick |
| |
| |
| | | |
|
| | | | |
| | |
|