Controleur de domaine

Controleur de domaine - Delphi/Pascal - Programmation

Marsh Posté le 11-08-2003 à 18:53:14    

Je dévellope actuellement un intranet pour une entreprise, et pour ne pas avoir à gérer des utilisateurs et des mots de passe, je souhaiterai faire en sorte que Windows s'en chage pour moi. L'idée est que l'utilisateur en arrivant sur l'intranet tape son login NT et son mot de passe, et ensuite l'intranet fait une requête auprés du contrôleur de domaine pour savoir si oui ou non cet utilisateur est connu.
C'est pour ça que j'ai besoin de vous, comment intéroger un contrôleur de domaine ?
De préférence en Delphi, mais si vous avez des pistes en C, je prends aussi...
 
Merci

Reply

Marsh Posté le 11-08-2003 à 18:53:14   

Reply

Marsh Posté le 22-08-2003 à 16:38:03    

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 :
  1. type
  2.    USER_INFO_0 = record
  3.       usri0_name: PWideChar;
  4.    end;
  5. ...
  6. implementation
  7. ...
  8. 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';
  9. procedure NetApiBufferFree(Buffer : Pointer); stdcall; external 'netapi32.dll';
  10. procedure TMainForm.GetListeUtilisateur;
  11. var
  12.    FIni: TIniFile;
  13.    bufptr: ^USER_INFO_0;
  14.    server: WideString;
  15.    sts: integer;
  16.    maxlen: DWORD;
  17.    entread, totalent, rhandle: DWORD;
  18.    i: integer;
  19. begin
  20.    //.Lecture du fichier INI.
  21.    FIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'TransfertHMY-Client.ini');
  22.    if FIni.ValueExists('Client', 'NomServeur') then
  23.       server := FIni.ReadString('Client', 'NomServeur', '')
  24.    else
  25.       server := '';   //chaine vide si enum users poste local
  26.                       //sinon :  donner le nom du serveur :  \\SEVEUR
  27.    FIni.Free;
  28.    maxlen := $FFFFFFFF;
  29.    entread := 0;
  30.    totalent := 0;
  31.    rhandle := 0;
  32.    bufptr := nil;
  33.    repeat
  34.       sts := NetUserEnum(PWideChar(Server), 0, 2, Pointer(bufptr), maxlen, entread, totalent, PDWORD(rhandle));
  35.       FormDestinataire.ListBoxContacts.Items.Clear;
  36.       if bufptr <> nil then
  37.       begin
  38.          for i := 0 to entread - 1 do
  39.          begin
  40.             FormDestinataire.ListBoxContacts.Items.Add(AnsiUpperCase(WideCharToString(bufptr^.usri0_name)));
  41. //            FormDestinataire.ListBoxContacts.Items.Add(AnsiUpperCase(WideCharToString(bufptr^.usri2_full_name)));
  42.             inc(bufptr);
  43.          end;
  44.       end;
  45.    until (sts <> 0) or (bufptr = nil) or (entread = totalent);
  46.    if bufptr <> nil then
  47.       NetApiBufferFree(bufptr);
  48. end;


 
Si ca peut t'aider ...
 
;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed