DELPHI et ACTIVE DIRECTORY (ou LDAP)

Signaler
Messages postés
166
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 février 2011
-
g2loq
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005
-
Bonjour,

Je souhaiterais developper avec delphi une petite appli qui permettrait de mettre a jour (ou creer) les champs nom, prenom, description et telephone.

Je ne trouve aucune doc ou exemple sur le net.

Quelqu'un a t'il des infos, des liens, ou mieux un exemple.

D'avance merci

5 réponses

Messages postés
1
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
13 octobre 2004

Pardon pour mon français

Voir ici:
http://www.vkarlsen.no/lvk/current/
http://www.ararat.cz/synapse/

Bonne chance

Thorin Oakenshield
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

Bonjour,

J'ai visité les liens mais comment fais-tu pour créer ou supprimer un compte dans l'active directory (avec les UO),

Merci pour ta réponse!
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

Il n'y a pas beaucoups d'exemple sur internet, ca fait des mois que je cherche. :-)

J'ai pondu une petite fonction, hiers elle marchait chez moi, aujourd'hui non et je ne vois pas pourquoi. Mais cela va peut être aidé quelqu'un. :-)

interface


uses
SysUtils,
Variants,
Dialogs,


ComObj, ActiveX,


ActiveDs_TLB; //ADSI








//------------------------------------------------------------------------------
function ADsGetObject(lpszPathName: PWideChar; const riid: TGUID; out obj): HResult; stdcall; external 'activeds.dll';
function ADsOpenObject(lpszPathName: PWideChar; lpszUserName: PWideChar; lpszPassword: PWideChar; dwReserved: LongInt; const riid: TIID; out obj): HResult; stdcall; external 'activeds.dll';


...





implementation






//------------------------------------------------------------------------------
function Change_Description_PC_ADSI ( nom_ordi_a_modif,descript : string) : string; // Modification de la description du PC ds Active Directory
const MAX_car = 255;
var
UnknownObj: IUnknown;
obj : IAds;


myUser, myPassword, nom_pc : string;
DestName : string;


PWCmyUser, PWCmyPassword, PWCDestName : array [0..MAX_car] of WideChar;


begin


nom_pc := nom_ordi_a_modif; //'l-atEcono1Essai';
DestName := 'LDAP://NomServeur/CN=' + nom_pc + ',OU=...,DC=...,DC=...,DC=...';
myUser := 'DOMAINE\LOGIN' ;
myPassword := 'PWD' ;


//test si la chaine rentre dans le tableau declarer dans VAR
if (length(DestName)
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

N.B : il faut faire des recherche autour du mot clef ADSI pour plus d'info.
Messages postés
10
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
15 mars 2005

la solution qui marche bien, a nouveau :-)

//------------------------------------------------------------------------------
function Change_Description_PC_ADSI ( nom_ordi_a_modif,descript : string) : string; // Modification de la description du PC ds Active Directory
const MAX_car = 255;
var
UnknownObj: IUnknown;
obj : IAds;


myUser, myPassword, nom_pc, DestName : string;



begin


nom_pc := nom_ordi_a_modif;
DestName := 'LDAP://NomServeur/CN=' + nom_pc + ',OU=...,DC=...,DC=...,DC=...';


myUser := 'DOMAIN\LOGIN' ;
myPassword := 'PWD' ;


try

//ADsGetObject(StringToOleStr(DestName), IID_IADs, UnknownObj); //connextion sans authentifications
OleCheck( AdsOpenObject( StringToOleStr (DestName),
StringToOleStr(myUser),
StringToOleStr(myPassword), 0, IID_IADs, UnknownObj)); //connextion avec authentifications



obj : = UnknownObj as IADs;


obj.Put('description', descript); //met dans un tampon
obj.SetInfo; //valide la valeur du tampon ds AD. Si Get avant SetInfo Alors cela efface le Put


result := obj.get('description');


except on E: EOleException do begin ShowMessage('Source ' + E.Source + ' Message ' + E.Message); end;
end;



end;
//------------------------------------------------------------------------------