Je reviens maintenant avec un problème pour lister les domaines (et
éventuellement workgroups) présents sur le réseau.
Toujours avec mon serveur windows 2003 standard.
J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère qu'une
chaine vide (je me suis peut-être, voire certainement, planter dans le code)
J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon peu de
connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une
explication à mon niveau sur son fonctionnement, ce serait sympa. Si c'est
avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Un grand merci à ceux qui me sauveront ;)
F.A.
Pour info, voici ce que j'ai trouvé:
NTSTATUS NET_API_FUNCTION
NetEnumerateTrustedDomains (
IN LPWSTR ServerName OPTIONAL,
OUT LPWSTR *DomainNames
);
DWORD DsEnumerateDomainTrusts(
LPTSTR ServerName,
ULONG Flags,
PDS_DOMAIN_TRUSTS* Domains,
PULONG DomainCount
);
Ça te retournera des structures NETRESOURCE dans lesquelles tu regarderas, par exemple, le champ dwDisplayType.
-- Arnold McDonald (AMcD) - Help #43/2006
http://arnold.mcdonald.free.fr/
Jean-Claude BELLAMY
Dans le message :44888d92$0$21210$, F.A. a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et éventuellement workgroups) présents sur le réseau. Toujours avec mon serveur windows 2003 standard. J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère qu'une chaine vide (je me suis peut-être, voire certainement, planter dans le code) J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une explication à mon niveau sur son fonctionnement, ce serait sympa. Si c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC ! (en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous NT4 WS NT4 SRV (autonome ou serveur de domaine) W2K PRO W2K SRV (autonome ou serveur de domaine) XP PRO W2K3 (autonome ou serveur de domaine) (vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à énumérer non seulement des serveurs, mais aussi plein d'autres choses, tels que les domaines et workgroups d'un réseau ! (peu connu!!!) (http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype" (un DWORD) cf. : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp
_________________________________________________
unit NetAPI;
interface // NB: comme j'ai "élagué" mon unité NetAPI, il est probable que des unités ci-dessous soient inutiles.
Function NetServerEnum(servername:LPCWSTR;level:DWORD; bufptr:Pointer;prefmaxlen:DWORD; var entriesread,totalentries:DWORD;servertype:DWORD; domain:LPCWSTR;var ResumeHandle:DWORD):NET_API_STATUS; stdcall;
Function NetApiBufferFree(Buffer:pointer):NET_API_STATUS; stdcall;
Function NetServerEnum; external 'netapi32.dll'; Function NetApiBufferFree; external 'netapi32.dll';
procedure NetEnumDomains; var resH: DWORD; ret, cnt: Integer; totentr, entread: DWORD; p1: PSERVER_INFO_101; buff: Pointer; DomainName : string; DomainComment : string; DomainVersion : string; DomainType : integer; begin repeat ret:=NetServerEnum(nil,LEVEL_INFO_COMP_FULL,@buff,MAX_PREFERRED_LENGTH, entread,totentr,SV_TYPE_DOMAIN_ENUM,nil,resH); if (ret = NERR_Success) or (ret = ERROR_MORE_DATA) then begin p1:=PSERVER_INFO_101(buff); for cnt:=0 to entread - 1 do begin with p1^ do begin DomainName:=wideChartostring(sv101_name); DomainVersion:=inttostr(sv101_version_major)+'.'+inttostr(sv101_version_minor); DomainComment:=wideChartostring(sv101_comment); if (sv101_type and SV_TYPE_DOMAIN_CTRL)<>0 then DomainType:=NetSetupDomainName else DomainType:=NetSetupWorkgroupName; end; // Ajouter ici le traitement voulu pour chaque domaine ou workgroup // DomainName : nom du domaine ou workgroup // DomainType : type du domaine // NetSetupWorkgroupName (=2) : workgroup // NetSetupDomainName (= 3) : domaine // DomainVersion : n° de version // DomainComment : commentaires éventuels // .... // .... Inc(p1); end; NetApiBufferFree(buff); end; until ret <> ERROR_MORE_DATA; end; _______________________________________________________________
Alors, çà te convient ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Dans le message :44888d92$0$21210$626a54ce@news.free.fr,
F.A. <FA@nospam.com> a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et
éventuellement workgroups) présents sur le réseau.
Toujours avec mon serveur windows 2003 standard.
J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère
qu'une chaine vide (je me suis peut-être, voire certainement, planter
dans le code)
J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon
peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une
explication à mon niveau sur son fonctionnement, ce serait sympa. Si
c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC !
(en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous
NT4 WS
NT4 SRV (autonome ou serveur de domaine)
W2K PRO
W2K SRV (autonome ou serveur de domaine)
XP PRO
W2K3 (autonome ou serveur de domaine)
(vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à
énumérer non seulement des serveurs, mais aussi plein d'autres choses, tels
que les domaines et workgroups d'un réseau ! (peu connu!!!)
(http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype"
(un DWORD)
cf. :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp
_________________________________________________
unit NetAPI;
interface
// NB: comme j'ai "élagué" mon unité NetAPI, il est probable que des unités
ci-dessous soient inutiles.
Function NetServerEnum(servername:LPCWSTR;level:DWORD;
bufptr:Pointer;prefmaxlen:DWORD;
var entriesread,totalentries:DWORD;servertype:DWORD;
domain:LPCWSTR;var ResumeHandle:DWORD):NET_API_STATUS; stdcall;
Function NetApiBufferFree(Buffer:pointer):NET_API_STATUS; stdcall;
Function NetServerEnum; external 'netapi32.dll';
Function NetApiBufferFree; external 'netapi32.dll';
procedure NetEnumDomains;
var
resH: DWORD;
ret, cnt: Integer;
totentr, entread: DWORD;
p1: PSERVER_INFO_101;
buff: Pointer;
DomainName : string;
DomainComment : string;
DomainVersion : string;
DomainType : integer;
begin
repeat
ret:=NetServerEnum(nil,LEVEL_INFO_COMP_FULL,@buff,MAX_PREFERRED_LENGTH,
entread,totentr,SV_TYPE_DOMAIN_ENUM,nil,resH);
if (ret = NERR_Success) or (ret = ERROR_MORE_DATA) then
begin
p1:=PSERVER_INFO_101(buff);
for cnt:=0 to entread - 1 do
begin
with p1^ do
begin
DomainName:=wideChartostring(sv101_name);
DomainVersion:=inttostr(sv101_version_major)+'.'+inttostr(sv101_version_minor);
DomainComment:=wideChartostring(sv101_comment);
if (sv101_type and SV_TYPE_DOMAIN_CTRL)<>0
then DomainType:=NetSetupDomainName
else DomainType:=NetSetupWorkgroupName;
end;
// Ajouter ici le traitement voulu pour chaque domaine ou workgroup
// DomainName : nom du domaine ou workgroup
// DomainType : type du domaine
// NetSetupWorkgroupName (=2) : workgroup
// NetSetupDomainName (= 3) : domaine
// DomainVersion : n° de version
// DomainComment : commentaires éventuels
// ....
// ....
Inc(p1);
end;
NetApiBufferFree(buff);
end;
until ret <> ERROR_MORE_DATA;
end;
_______________________________________________________________
Alors, çà te convient ?
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Dans le message :44888d92$0$21210$, F.A. a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et éventuellement workgroups) présents sur le réseau. Toujours avec mon serveur windows 2003 standard. J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère qu'une chaine vide (je me suis peut-être, voire certainement, planter dans le code) J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une explication à mon niveau sur son fonctionnement, ce serait sympa. Si c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC ! (en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous NT4 WS NT4 SRV (autonome ou serveur de domaine) W2K PRO W2K SRV (autonome ou serveur de domaine) XP PRO W2K3 (autonome ou serveur de domaine) (vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à énumérer non seulement des serveurs, mais aussi plein d'autres choses, tels que les domaines et workgroups d'un réseau ! (peu connu!!!) (http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype" (un DWORD) cf. : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp
_________________________________________________
unit NetAPI;
interface // NB: comme j'ai "élagué" mon unité NetAPI, il est probable que des unités ci-dessous soient inutiles.
Function NetServerEnum(servername:LPCWSTR;level:DWORD; bufptr:Pointer;prefmaxlen:DWORD; var entriesread,totalentries:DWORD;servertype:DWORD; domain:LPCWSTR;var ResumeHandle:DWORD):NET_API_STATUS; stdcall;
Function NetApiBufferFree(Buffer:pointer):NET_API_STATUS; stdcall;
Function NetServerEnum; external 'netapi32.dll'; Function NetApiBufferFree; external 'netapi32.dll';
procedure NetEnumDomains; var resH: DWORD; ret, cnt: Integer; totentr, entread: DWORD; p1: PSERVER_INFO_101; buff: Pointer; DomainName : string; DomainComment : string; DomainVersion : string; DomainType : integer; begin repeat ret:=NetServerEnum(nil,LEVEL_INFO_COMP_FULL,@buff,MAX_PREFERRED_LENGTH, entread,totentr,SV_TYPE_DOMAIN_ENUM,nil,resH); if (ret = NERR_Success) or (ret = ERROR_MORE_DATA) then begin p1:=PSERVER_INFO_101(buff); for cnt:=0 to entread - 1 do begin with p1^ do begin DomainName:=wideChartostring(sv101_name); DomainVersion:=inttostr(sv101_version_major)+'.'+inttostr(sv101_version_minor); DomainComment:=wideChartostring(sv101_comment); if (sv101_type and SV_TYPE_DOMAIN_CTRL)<>0 then DomainType:=NetSetupDomainName else DomainType:=NetSetupWorkgroupName; end; // Ajouter ici le traitement voulu pour chaque domaine ou workgroup // DomainName : nom du domaine ou workgroup // DomainType : type du domaine // NetSetupWorkgroupName (=2) : workgroup // NetSetupDomainName (= 3) : domaine // DomainVersion : n° de version // DomainComment : commentaires éventuels // .... // .... Inc(p1); end; NetApiBufferFree(buff); end; until ret <> ERROR_MORE_DATA; end; _______________________________________________________________
Alors, çà te convient ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
F.A.
"Jean-Claude BELLAMY" a écrit dans le message de news: 4488a7b3$0$895$
Dans le message :44888d92$0$21210$, F.A. a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et éventuellement workgroups) présents sur le réseau. Toujours avec mon serveur windows 2003 standard. J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère qu'une chaine vide (je me suis peut-être, voire certainement, planter dans le code) J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une explication à mon niveau sur son fonctionnement, ce serait sympa. Si c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC ! (en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous NT4 WS NT4 SRV (autonome ou serveur de domaine) W2K PRO W2K SRV (autonome ou serveur de domaine) XP PRO W2K3 (autonome ou serveur de domaine) (vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à énumérer non seulement des serveurs, mais aussi plein d'autres choses, tels que les domaines et workgroups d'un réseau ! (peu connu!!!) (http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype" (un DWORD) cf. : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp (...) Alors, çà te convient ?
Impeccable. La prochaine fois, quand j'aurai besoin de quelque chose, je demanderai ici avant de chercher ;)) J'ai regardé aussi WNetEnumResource (suggéré par AMcD), ça m'a l'air intéressant. Donc merci à tous les deux et bonne fin de journée.
F.A.
"Jean-Claude BELLAMY" <Jean-Claude.Bellamy@wanadoo.fr> a écrit dans le
message de news: 4488a7b3$0$895$ba4acef3@news.orange.fr...
Dans le message :44888d92$0$21210$626a54ce@news.free.fr,
F.A. <FA@nospam.com> a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et
éventuellement workgroups) présents sur le réseau.
Toujours avec mon serveur windows 2003 standard.
J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère
qu'une chaine vide (je me suis peut-être, voire certainement, planter
dans le code)
J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon
peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une
explication à mon niveau sur son fonctionnement, ce serait sympa. Si
c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC !
(en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous
NT4 WS
NT4 SRV (autonome ou serveur de domaine)
W2K PRO
W2K SRV (autonome ou serveur de domaine)
XP PRO
W2K3 (autonome ou serveur de domaine)
(vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à
énumérer non seulement des serveurs, mais aussi plein d'autres choses,
tels que les domaines et workgroups d'un réseau ! (peu connu!!!)
(http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype"
(un DWORD)
cf. :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp
(...) Alors, çà te convient ?
Impeccable.
La prochaine fois, quand j'aurai besoin de quelque chose, je demanderai ici
avant de chercher ;))
J'ai regardé aussi WNetEnumResource (suggéré par AMcD), ça m'a l'air
intéressant.
Donc merci à tous les deux et bonne fin de journée.
"Jean-Claude BELLAMY" a écrit dans le message de news: 4488a7b3$0$895$
Dans le message :44888d92$0$21210$, F.A. a pris la peine d'écrire ce qui suit :
Bonsoir,
Je reviens maintenant avec un problème pour lister les domaines (et éventuellement workgroups) présents sur le réseau. Toujours avec mon serveur windows 2003 standard. J'ai essayé avec NetEnumerateTrustedDomains, mais je ne récupère qu'une chaine vide (je me suis peut-être, voire certainement, planter dans le code) J'ai vu qu'il existait aussi DsEnumerateDomainTrusts, mais là, mon peu de connaissance ne semble plus suffire, je nage complètement.
Si quelqu'un à un exemple ou un bout de code qui fonctionne ou une explication à mon niveau sur son fonctionnement, ce serait sympa. Si c'est avec Delphi, c'est encore mieux sinon j'essaierai de l'adapter.
Il sufft de demander !!!!
C'est ce que je fais tous les jours (ou presque ;-) ) dans SUPEREXEC ! (en travaux actuellement)
Ce que j'ai écrit ci-dessous fonctionne sous NT4 WS NT4 SRV (autonome ou serveur de domaine) W2K PRO W2K SRV (autonome ou serveur de domaine) XP PRO W2K3 (autonome ou serveur de domaine) (vérifié/testé/....)
Cette unité est basée sur l'utilisation de "NetServerEnum", qui sert à énumérer non seulement des serveurs, mais aussi plein d'autres choses, tels que les domaines et workgroups d'un réseau ! (peu connu!!!) (http://www.bellamyjc.org/download/wav/sketches/cest_un_droit_etabli.wav)
Le type "d'exploration" est déterminé par la valeur du filtre "servertype" (un DWORD) cf. : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netserverenum.asp (...) Alors, çà te convient ?
Impeccable. La prochaine fois, quand j'aurai besoin de quelque chose, je demanderai ici avant de chercher ;)) J'ai regardé aussi WNetEnumResource (suggéré par AMcD), ça m'a l'air intéressant. Donc merci à tous les deux et bonne fin de journée.