IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi .NET Discussion :

ldap et ADSI


Sujet :

Delphi .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut ldap et ADSI
    Bonjour,

    Je cherche à ajouter une classe auxiliaire à un objet de l'active directory mais il semble que ce ne soit pas possible en utilisant system.directoryservices, il faut passer par adsi.

    J'essaye donc de me connecter mais je n'y arrive pas.

    J'ai d'abord déclarer ma procedure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    procedure ADsOpenObject(lpszPathName:string; lpszUserName: string;
        lpszPassword: string; dwReserved: dword; riid: TGuid;out ppObject);
     
    interface
     
    [dllimport('activeds.dll',charset=charset.Unicode,preserveSig=false)]
      procedure ADsOpenObject(lpszPathName:string; lpszUserName: string;
        lpszPassword: string; dwReserved: dword; riid: TGuid;
        [MarshalAs(UnmanagedType.&Interface)] out ppObject);external;
     
    const
      IID_IADs : TGuid = '{FD8256D0-FD15-11CE-ABC4-02608C9E7553}';
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      uObj:IADs;
     
    begin
     
      ADsOpenObject('LDAP://192.168.1.2:389/DC=srv,DC=local',
       'srv\Administrateur','myPass',1,iid_iads,val);
     
    end;
    Je reçois un message tentative de lecture de mémoire protégée... D'où peut venr le problème ? merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Je crois bien qu'il faut travailler avec des WideString...
    en Win32 je ferais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Function ADsOpenObject(lpszPathName: PWideChar;
      lpszUserName: PWideChar; lpszPassword: PWideChar;
      dwReserved: LongInt; Const riid: TGUID; Out obj): HResult;
      Stdcall; External 'activeds.dll';
    et pour ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [dllimport('activeds.dll',charset=charset.Unicode,preserveSig=false)]
      procedure ADsOpenObject(lpszPathName:string; lpszUserName: string;
        lpszPassword: string; dwReserved: dword; riid: TGuid;
        [MarshalAs(UnmanagedType.&Interface)] out ppObject);external;
    désolé mais cette syntax m'est inconnue...(Delphi.Net j'imagine?)
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut
    Citation Envoyé par Eric Boisvert Voir le message
    désolé mais cette syntax m'est inconnue...(Delphi.Net j'imagine?)
    Euh ! Ben sur le forum Delphi.Net, oui il vaut mieux.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Par défaut
    Citation Envoyé par Eric Boisvert
    désolé mais cette syntax m'est inconnue...(Delphi.Net j'imagine?)
    je voulais dire nouveau en Delphi.Net....

    ce qui est bizard... c'est qu'en win32 c'est bien une fonction...

    et en delphi.net... tu la défini en procedure...et aucune valeur de retour?

    aussi... win32 on parle bien de PWideChar pour le path,username et password...

    en delphi.net...string...
    peut-être que string en .Net est automatiquement en WideString...

    j'espère avoir été plus claire dans ma simple réflexion...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut
    Ah pardon.

    Citation Envoyé par Eric Boisvert Voir le message
    ce qui est bizard... c'est qu'en win32 c'est bien une fonction...

    et en delphi.net... tu la défini en procedure...et aucune valeur de retour?
    L'aide précise que dans le cas d'une fonction renvoyant un HResult on peut la déclarer en procédure, c'est delphi qui va se charger déclencher une erreur si Hresult est différent de S_OK.


    Citation Envoyé par Eric Boisvert Voir le message
    peut-être que string en .Net est automatiquement en WideString...
    C'est le cas comme le précise l'aide. Il me semble même que c'est le cas en .Net et en win32 depuis quelques versions mais là je m'y aventurerais pas car y a un bout de temps que j'ai pas fait du win32.

  6. #6
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Par défaut
    En tout cas pour éviter d'utiliser cette fonction puisque je n'ai toujours pas de solution, on peut utiliser DirectoeryEntry et la propriété nativeObject renvoie l'interface souhaitée.

Discussions similaires

  1. ADSI // LDAP // Domaine Multiple
    Par Kerberos69 dans le forum VBScript
    Réponses: 0
    Dernier message: 30/07/2010, 10h55
  2. Réponses: 8
    Dernier message: 23/01/2007, 21h02
  3. [LDAP] Intégrer de l'ADSI
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 23/03/2006, 11h39
  4. ADSI avec windows 2000
    Par alex2205 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 25/03/2003, 16h59
  5. LDAP
    Par Filip dans le forum Développement
    Réponses: 2
    Dernier message: 24/12/2002, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo