lung | J'utilise un code de ce genre pour récupérer la liste des utilisateurs définis sur un poste ou sur un serveur :
Code :
- type
- USER_INFO_0 = record
- usri0_name: PWideChar;
- end;
- ...
- implementation
- ...
- function NetUserEnum(Server: PWideChar; Level: DWORD; Filter: DWORD; var Bufptr: Pointer; PrefMaxLen: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD; Resume_Handle: PDWORD): Integer; stdcall; external 'netapi32.dll';
- procedure NetApiBufferFree(Buffer : Pointer); stdcall; external 'netapi32.dll';
- procedure TMainForm.GetListeUtilisateur;
- var
- FIni: TIniFile;
- bufptr: ^USER_INFO_0;
- server: WideString;
- sts: integer;
- maxlen: DWORD;
- entread, totalent, rhandle: DWORD;
- i: integer;
- begin
- //.Lecture du fichier INI.
- FIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TransfertHMY-Client.ini');
- if FIni.ValueExists('Client', 'NomServeur') then
- server := FIni.ReadString('Client', 'NomServeur', '')
- else
- server := ''; //chaine vide si enum users poste local
- //sinon : donner le nom du serveur : \\SEVEUR
- FIni.Free;
- maxlen := $FFFFFFFF;
- entread := 0;
- totalent := 0;
- rhandle := 0;
- bufptr := nil;
- repeat
- sts := NetUserEnum(PWideChar(Server), 0, 2, Pointer(bufptr), maxlen, entread, totalent, PDWORD(rhandle));
- FormDestinataire.ListBoxContacts.Items.Clear;
- if bufptr <> nil then
- begin
- for i := 0 to entread - 1 do
- begin
- FormDestinataire.ListBoxContacts.Items.Add(AnsiUpperCase(WideCharToString(bufptr^.usri0_name)));
- // FormDestinataire.ListBoxContacts.Items.Add(AnsiUpperCase(WideCharToString(bufptr^.usri2_full_name)));
- inc(bufptr);
- end;
- end;
- until (sts <> 0) or (bufptr = nil) or (entread = totalent);
- if bufptr <> nil then
- NetApiBufferFree(bufptr);
- end;
|
Si ca peut t'aider ...
|