Fonction de recherche AD [Résolu]

cs_Boulette67 4 Messages postés jeudi 30 juin 2011Date d'inscription 15 février 2012 Dernière intervention - 14 févr. 2012 à 16:40 - Dernière réponse : cs_Boulette67 4 Messages postés jeudi 30 juin 2011Date d'inscription 15 février 2012 Dernière intervention
- 15 févr. 2012 à 20:00
Bonjour amis du développement ;)

Je me suis mis il y a peu au C#.

J'ai un WinForm avec un bouton recherche qui vérifie quel radioBouton (Utilisateur ou Ordinateur) est sélectionné, ce qui me permet de renseigner ma variable strType = = "user" ou == "computer" et critère qui est un textbox c'est là que je tape le nom de l'utilisateur ou le nom de l'ordinateur. Jusque là tout va bien rien de surprenant.

Sauf que je n'ai jamais de retour, mon rech.FindAll() renvoi toujours null.

J'ai du louper un truc car ce code (en VB) fonctionne. Je suis sur de la présence des comptes que je cherche ainsi que du compte que j'utilise (administrateur du domaine) :cry:

Ma fonction
private string[] Recherche(string strType, string strCritere)
        {
            string[] tableau   = null;
            try
            {
                DirectoryEntry ldap = new DirectoryEntry("LDAP://domain.fr", "compte", "mdp");
                DirectorySearcher rech  = new DirectorySearcher(ldap);
                
                rech.Filter = "(&(objectclass=" + strType + ")(SAMAccountName=" + strCritere + "))";
                SearchResultCollection resultats = rech.FindAll();

                foreach (SearchResult resultat in resultats) 
                {
                    DirectoryEntry entree   = resultat.GetDirectoryEntry();
                    string nom              = entree.Properties["SAMAccountName"].Value.ToString();     //Compte AD
                    string description      = entree.Properties["description"].Value.ToString();        //Description
                    string chemin           = entree.Properties["distinguishedName"].Value.ToString();  //Chemin UO
                    if (strType == "user")
                    {
                        string postofficebox = entree.Properties["postofficebox"].Value.ToString();
                        tableau = new string[] { nom, postofficebox, description, chemin };             //Renseignements utilisateurs
                        postofficebox = null;
                    }
                    else
                    {
                        tableau = new string[] { nom, description, chemin };                            //Renseignements ordinateurs
                    }

                    nom = null;
                    description = null;
                    chemin = null;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                tableau = null;
            }

            return tableau;

        }


J'ai suivi le tuto ["http://lgmorand.developpez.com/dotnet/adimage/" http://lgmorand.developpez.com/dotnet/adimage/]

Merci d'avance à ceux qui vont passer du temps à me lire. J'espère avoir été précis.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_Boulette67 4 Messages postés jeudi 30 juin 2011Date d'inscription 15 février 2012 Dernière intervention - 15 févr. 2012 à 20:00
3
Merci
Bonjour Whismeril,

En fait je suis une grosse quiche
En faisant plusieurs test ce soir j'ai pu constater que ma fonction est correcte. C'est le contenu de ma variable strCritere qui n'est pas bon.

Mon filtre se fait sur SAMAccountName qui retourne une chaine de type "bob.tartempion"
Dans mon textBox je saisissais : "tartemp*"
Forcément cela ne fonctionne pas, j'aurai du saisir "*tartemp*" ou changer le SAMAccountName de mon filtre pour CN qui lui retourne "TARTEMPION Bob".

Merci cs_Boulette67 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_Boulette67
Whismeril 11624 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 juin 2018 Dernière intervention - 15 févr. 2012 à 19:17
0
Merci
Bonjour,

critère qui est un textbox
s'agit-il de strCritere?

Si oui alors tu dois écrire strCritere.Text quand tu veux accéder au texte saisi, là par exemple:
rech.Filter = "(&(objectclass=" + strType + ")(SAMAccountName=" + strCritere + "))";


En VB6 (en .Net je ne sais pas) quand dans une ligne de ce type tu écris juste le nom d'une textbox ça retourne le texte saisi, en C# ça retourne la valeur de .ToString().
Par défaut la valeur de .ToString() est une string décrivant le type de la variable, dans ton cas ""System.Windows.Forms.TextBox".
La valeur de rech.filter n'est donc pas trouvable.


Whismeril
Commenter la réponse de Whismeril

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.