Message de rapport:
 

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.
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2