Re: NetUserEnum |
Sujet: Re: NetUserEnum par Anonyme sur 3/2/2004 16:32:34 Salut Romu, là tout de suite sous la main j'ai que la version Delphi (Pascal) : Pour une version en C, y a l'exemple du MSDN à l'adresse suivante : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netuserenum.asp unit ListeUsers; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Constantes; type TForm1 = class(TForm) Lister: TButton; ListeUsers: TListBox; ZNbreUsers: TEdit; Label1: TLabel; ZServeur: TEdit; Label2: TLabel; procedure BtFinClick(Sender: TObject); procedure ListerClick(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; Type NET_API_STATUS = DWORD; StrUniCode = ARRAY[0..255] of WideChar ; UserInf2 = record Nom : PWideChar; Passe : PWideChar; Passe_age : DWORD; Priv : DWORD ; HomeDir : PWideChar; Comment : PWideChar; flags : DWord; PathScript : PWideChar; PrivOp : DWORD; FullName : PWideChar; UserComment : PWideChar; Parms : PWideChar; Stations : PWideChar; LastLogon : DWORD ; LastLogoff : DWORD; DateExpire : DWORD; MaxDisk : DWORD; UnitsPerWeek : DWORD; HeureConnect : PBYTE; BadPwCount : DWORD; GoodLogCount : DWORD; ServeurDeLog : PWideChar; CodePays : DWORD; CodePage : DWORD; end; TabloUser = ARRAY [1..1000] of UserInf2; function UserEnum (servername:PWideChar ; level: DWord; filter : DWord; var buf: Pointer; PrefMaxLen : DWord; EntriesRead : LPDWord; TotalEntries : LPDWORD; ResumeHandle: LPDWord ): NET_API_STATUS;stdcall; external 'NetApi32.dll' name 'NetUserEnum'; function NetBufferFree (PBuffer : Pointer):NET_API_STATUS;stdcall; external 'NetApi32.dll' name 'NetApiBufferFree'; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.BtFinClick(Sender: TObject); begin Application.Terminate ; end; procedure TForm1.ListerClick(Sender: TObject); Var Result : Net_Api_Status; EntreesLues, TotalEntrees, ResumeHandle : DWord; i:integer; PTableauUser : ^TabloUser; Serveur : StrUniCode; begin ListeUsers.Clear; EntreesLues:=0 ; TotalEntrees := 0 ; ResumeHandle := 0; if Length(ZServeur.text) >0 then ZServeur.text:='\\'+UpperCase(Trim(ZServeur.Text)); StringToWideChar(ZServeur.Text,@Serveur, sizeof(Serveur)); Result:=UserEnum(@Serveur,2,0,pointer(PTableauUser),$FFFFFFFF,@EntreesLues,@TotalEntrees,@ResumeHandle); if result = NERR_SUCCESS then begin ZNbreUsers.Text:=IntToStr(TotalEntrees); for i:=1 to TotalEntrees do begin ListeUsers.Items.Add('Nom :'+String(PTableauUser[i].Nom)); {ListeUsers.Items.Add('Passe :'+String(PTableauUser[i].Passe)); ListeUsers.Items.Add('Passe_age :'+IntToStr(PTableauUser[i].Passe_age)); ListeUsers.Items.Add('Priv :'+IntToStr(PTableauUser[i].Priv)) ; ListeUsers.Items.Add('HomeDir :'+String(PTableauUser[i].HomeDir))} ; ListeUsers.Items.Add('Comment :'+String(PTableauUser[i].Comment)) ; {ListeUsers.Items.Add('flags :'+IntToHex(PTableauUser[i].flags,8)) ; ListeUsers.Items.Add('Pathscript :'+String(PTableauUser[i].PathScript)) ; ListeUsers.Items.Add('PrivOp :'+IntToHex(PTableauUser[i].PrivOp,8)); } ListeUsers.Items.Add('FullName :'+String(PTableauUser[i].FullName)) ; ListeUsers.Items.Add('UserComment :'+String(PTableauUser[i].UserComment)); {ListeUsers.Items.Add('Parms :'+String(PTableauUser[i].Parms )); ListeUsers.Items.Add('Stations :'+String(PTableauUser[i].Stations )); ListeUsers.Items.Add('LastLogon :'+IntToStr(PTableauUser[i].LastLogon )) ; ListeUsers.Items.Add('LastLogOff :'+IntToStr(PTableauUser[i].LastLogoff)); ListeUsers.Items.Add('DateExpire :'+IntToStr(PTableauUser[i].DateExpire)); ListeUsers.Items.Add('MaxDisk :'+IntToStr(PTableauUser[i].MaxDisk)); ListeUsers.Items.Add('UnitsPerWeek :'+IntToStr(PTableauUser[i].UnitsPerWeek )); ListeUsers.Items.Add('BadPwCount : '+IntToStr(PTableauUser[i].BadPwCount)); ListeUsers.Items.Add('GoodLogCount :'+IntToStr(PTableauUser[i].GoodLogCount)); ListeUsers.Items.Add('ServeurDeLog :'+String(PTableauUser[i].ServeurDeLog)); ListeUsers.Items.Add('CodePays :'+IntToStr(PTableauUser[i].CodePays)); ListeUsers.Items.Add('CodePage :'+IntToStr(PTableauUser[i].CodePage));} ListeUsers.Items.Add('------------------------'); end; NetBufferFree(PTableauUser); end else showmessage('Erreur : '+IntToStr(Result)); end; end. Si tu trouves le truc, ça m'arrangerai beaucoup. |