0/5 (7 avis)
Vue 15 562 fois - Téléchargée 984 fois
//----------------------------------------------------------------------------------// // Unite pour gérer AD. Crée le 21/02/05, par stef_cch@yahoo.fr // // Dernière modif le 21/02/05. // //----------------------------------------------------------------------------------// unit LibADSI; 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'; function MOVE_ordi_ds_ActiveDirectory(nom_PC_a_deplacer : string; Type_de_PC : integer): string; function Change_Description_PC_ADSI ( nom_ordi_a_modif,descript : string) : string; // Modification de la description du PC ds Active Directory //------------------------------------------------------------------------------ implementation //------------------------------------------------------------------------------ function MOVE_ordi_ds_ActiveDirectory(nom_PC_a_deplacer : string; Type_de_PC : integer): string; const MAX_car = 255; var UnknownObj: IUnknown; container : IADsContainer; nom_pc_loc, ou_dest_loc : string; myUser, myPassword : string; SourceName, DestName, NewName : String; begin myUser := 'DOMAIN\LOGIN' ; myPassword := 'PWD' ; nom_pc_loc := nom_PC_a_deplacer; DestName := 'LDAP://NomServeur/OU=' + ou_dest_loc + ',OU=...,DC=...,DC=...,DC=...'; SourceName := 'LDAP://NomServeur/CN=' + nom_pc_loc + ',OU=OU_SOURCE,DC=...,DC=...,DC=...'; NewName := ''; //'CN=NOUVEAU_NOM_PC_A_DEPLACER'; try //OleCheck(ADsGetObject(StringToOleStr(DestName), IID_IADs, UnknownObj)); //connextion sans authentifications OleCheck( AdsOpenObject( StringToOleStr(DestName), StringToOleStr(myUser), StringToOleStr(myPassword), 0, IID_IADsContainer, UnknownObj)); //avec authentif container := UnknownObj as IADsContainer; container.MoveHere( StringToOleStr(SourceName), StringToOleStr(NewName) ); //Deplace et renomme except on E: EOleException do begin ShowMessage('Source = ' + E.Source + ' Message = ' + E.Message); end; end; end; //------------------------------------------------------------------------------ function Change_Description_PC_ADSI ( nom_ordi_a_modif,descript : string) : string; // Modif 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)); //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; //------------------------------------------------------------------------------
16 mars 2005 à 11:56
C'est marrant, mais on dirait qu'on est que deux que le sujet AD intéresse :-) !
@+
15 mars 2005 à 11:01
Ensuite, moi j'ouvre le repertoire Domain NC[nom serveur],
Puis le Repertoire DC=...,DC=...,DC=...
Puis le repertoire dans le lequel se trouve mon PC c.à.d OU=PCFixe,
Puis click droit sur le PC pour afficher les propriétées. Et je recopi la première ligne PATH 'LDAP://....'
ADSI Edit, sert a connaitre le vrai nom des champs pour faire tes requetes LDAP. Nom qui ne sont pas dans Active Direct. et que tu ne peux pas inventer. :-)
Voilà :-)
14 mars 2005 à 14:55
14 mars 2005 à 14:54
Bon, tout se compile très bien, mais quand je veux me connecter à AD j'ai un message d'avertissement.. je ne l'ai pas noté :-( ...
Ceci dit, je suppose que j'ai mal rempli la ligne
DestName := 'LDAP://NomServeur/CN=' + nom_pc + ',OU=...,DC=...,DC=...,DC=...';
car je ne connais que le nom du pc, je ne sais pas quoi mettre dans les autres champs... faut il obligatoirement renseigner l'OU du poste ?
et mettre plusieurs DC ????? (DC= directory controleur je présume ?)... oui je n'y connais pas grand chose en AD comme vous pouvez le constater :-) !!!
Je ne teste que la fonction Change_Description_PC_ADSI pour l'instant, et le message d'erreur que j'ai est retourné par showmessage (Change_Description_PC_ADSI ('toto','test') );
Merci d'avance pour votre aide et vos réponses,
Meilleures salutations !!!!
7 mars 2005 à 16:19
SUPER :-) !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.