2009-10-09 14 views
8

Używam Active Directory Explorer od Marka Russinovicha. To jest świetne narzędzie.Wyszukiwanie identyfikatora objectGUID w AD

Używam go do nawigacji w aktywnym katalogu, aby upewnić się, że mój program, który używa DirectorySearchera z .NET, zwraca poprawne dane.

Coś dzieje się jednak, gdy staram się szukać w moim programie z DirectorySearcher dla objectGUID, jeśli przechodzą w rzeczywistej GUID jako ciąg nie zwraca niczego, gdzie jakbym wykorzystać Active Directory Explorer, kiedy dodać

objectGuid o wartości f8d764ff-9a6a-418e-A641-b6f99661a8d5 jego punkt wyszukiwania staje: (objectGUID = \ FFd \ d7 \ F8j \ 9A \ 8EA \ A6A \ B6 \ F9 \ 96a \ A8 \ D5 *)

W jaki sposób mogę to zrobić dla kataloguSearcher w moim programie, domyślam się, że jest to ciąg znaków w postaci oktetów, ale nie mogę tego rozgryźć.

Odpowiedz

10

The forums towarzyszący znakomitemu The .NET Developer's Guide to Directory Services Programming (Joe Kaplan/Ryan Dunn) jest doskonałym źródłem takich informacji.

Przeczytaj ten wątek pod tytułem Find the object using objectGuid property, który pokazuje, jak przekonwertować "zwykły" identyfikator GUID na format S.DS "OctetString".

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; 
} 

To może być lekko zoptymalizowana za pomocą StringBuilder zamiast kolejno łącząc razem łańcuch - ale wydaje się dość proste inaczej.

Mam nadzieję, że to pomoże.

Marc

+0

wielki zasób rzeczywiście, dzięki! – Matt

3
... 
searcher.PropertiesToLoad.Add("objectGUID"); 

SearchResultCollection found = found = searcher.FindAll(); 

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

Aby uzyskać oktet String użytkowej przez ADExplorer zastosować kroki do łańcucha GUID:

  • pierwszą wielką GUID:

F8D764FF-9A6A-418E-A641-B6F99661A8D5

  • podzielić ją na każdej tablicy rozdzielczej na pięć części:

F8D764FF, 9A6A, 418E, A641, B6F99661A8D5

  • podzielonych każdą część w bajty (dwie cyfry sześciokątne każdy):

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

  • odwrócić Bajty pierwszych trzech części:

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

  • odrzucenia podział na części:

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

  • dołączana ukośnik odwrotny do każdego bajtu:

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

  • złączyć bajtów:

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