8
votes

Recherche d'un objetGuid en annonce

J'utilise le Explorateur Active Directory de Mark Russinovich. C'est un excellent outil.

Je l'utilise pour naviguer pour naviguer Active Directory pour vous assurer que mon programme utilise DirectorySearcher à partir de .NET renvoie des données correctes.

Quelque chose arrive cependant, lorsque j'essaie de chercher à l'intérieur de mon programme avec DirectorySearcher pour ObjectGuid, si je passe dans le GUID réel en tant que chaîne, cela ne renvoie rien, où j'utilise Explorateur Active Directory , quand j'ajoute

ObjecteGuid avec valeur F8D764FF-9A6A-418E-A641-B6F99661A8D5, sa clause de recherche devient: (ObjectGuid = \ ffd \ d7 \ f8j \ 9a \ 8ea \ a6a \ b6 \ f9 \ 96a \ a8 \ d5 *)

Comment puis-je faire ceci pour DirectorySearcher dans mon programme, je suppose que c'est une truc de cordes d'octet, mais je ne peux pas le comprendre.


0 commentaires

3 Réponses :


13
votes

the forums accompagne l'excellent Le Guide de développeur .NET Pour la programmation des services d'annuaire (Joe Kaplan / Ryan Dunn) est une excellente source d'informations comme celle-ci. Consultez ce fil ici intitulé Recherchez l'objet à l'aide de la propriété ObjectGuid , qui montre comment Vous pouvez convertir un «GUIG régulier» au format S.DS «octetstring». P>

internal string ConvertGuidToOctetString(string objectGuid)
{
   System.Guid guid = new Guid(objectGuid);
   byte[] byteGuid = guid.ToByteArray();

   string queryGuid = "";

   foreach (byte b in byteGuid)
   {
       queryGuid += @"\" + b.ToString("x2");
   }

   return queryGuid; 
}


1 commentaires

Wow, cela a pris une minute pour trouver! J'ajouterai cela était nécessaire pour moi à l'aide de la bibliothèque Novell.Directory.ldap.NetStandard pour obtenir correctement la fonction de recherche pour analyser My GUID ... ldapconnection.Search ("basé sur", ldapconnection.scope_one, "objetguid = "+ ConvertGuidtooctetstring (ObjectGuid), ATTRAS, FAUX);



4
votes
...
searcher.PropertiesToLoad.Add("objectGUID");

SearchResultCollection found = found = searcher.FindAll();

foreach (SearchResult result in found)
{
   Guid oGuid = new Guid((byte[])result.Properties["objectGUID"][0]);
}
...

0 commentaires

2
votes

Pour obtenir une chaîne d'octet utilisable par ADExplorer, appliquez ces étapes à la chaîne GUID:

  • première majuscule le GUID:

    F8D764FF-9A6A-418E-A641-B6F99661A8D5

    • divisez-le sur chaque tiret en cinq parties:

      F8D764FF, 9A6A, 418E, A641, B6F99661A8D5

      • diviser chaque partie en octets (deux chiffres hexagonaux chacun):

        {f8, d7, 64, ff}, {9a, 6a}, {41, 8e}, {A6, 41}, {B6, F9, 96, 61, A8, D5}

        • Inverser les octets des trois premières parties:

          {ff, 64, d7, f8}, {6a, 9a}, {8e, 41}, {A6, 41}, {B6, F9, 96, 61, A8, D5}

          • Ne tenez pas compte de la division en parties:

            FF, 64, D7, F8, 6A, 9A, 8E, 41, A6, 41, B6, F9, 96, 61, A8, D5

            • Prepend une barre oblique inverse à chaque octet:

              \ ff, \ 64, \ d7, \ f8, \ 6a, \ 9a, \ 8e, \ 41, \ A6, \ 41, \ b6, \ f9, \ 96, \ 61, \ A8 , \ D5

              • concaténer les octets:

                \ ff \ 64 \ d7 \ f8 \ 41 \ a6 \ 41 \ b6 \ f9 \ 96 \ 61 \ a8 \ 96 \ 61 \ a8 \ d5


0 commentaires