2014-12-01 4 views
2

У меня есть задача найти объект guid и конечного пользователя. Я использую C#, чтобы найти его. Прочитав несколько статей по этой теме, я использовал класс DirectoryEntry, чтобы узнать детали пользователя AD. Данные объекта SearchResult после запроса AD дают мне objectguid, но это не совсем GUID в терминах .net. Мне пришлось изменить его на правильное руководство, чтобы я использовал его в приложении. Когда я искал Интернет о преобразовании ObjectGUID в GUID я нашел два различных способа, как описано нижеGUID объекта из AD для пользователя

Первый:

DirectoryEntry de = searchResult.GetDirectoryEntry(); 
Guid userGuid = new Guid(de.NativeGuid); 

Вторая:

Guid userGuid = new Guid((byte[]) searchResult.Properties["objectguid"][0]); 

Оба дает мне GUID, но они разные. Я не понимаю, какой из них следует рассмотреть. Поскольку мне приходится делать это примерно за 50000 записей, первый вариант занимает у меня довольно много времени, что неприемлемо в моем сценарии. Второй вариант не занимает много времени, но я не уверен, что GUID, созданный таким образом, в порядке.

Вот мой вопрос

  1. Guid ли пользователь, который я получил во втором варианте для пользователя AD право использовать один?
  2. Если идентификатор GUID из первого варианта является правильным, есть ли способ, которым я могу найти лучший способ (с учетом времени его принятия)?

Спасибо за ваше время.

+0

См. Этот ответ http://stackoverflow.com/questions/1644989/difference-between-nativeguid-and-guid-in-active-directory – user469104

+0

Для случая один, более простой способ получить правильный GUID - это 'Guid userGuid = searchResult.GetDirectoryEntry(). Guid; 'Но второй предпочтительнее, поскольку в случае, если один будет генерировать больше доступа к AD для привязки' DirectoryEntry'. – baldpate

ответ

0

Из комментариев
Для случая один, более простой способ получить правильный GUID - Guid userGuid = searchResult.GetDirectoryEntry(). Guid; Но второй предпочтительнее, поскольку в случае, если один будет генерировать больше доступа к AD для привязки DirectoryEntry.

Его просто различие в кодировке между двумя (native vs regular), но значение одно и то же. ВСЕГДА избегайте использования метода searchResult.GetDirectoryEntry(), если сможете. Это буквально пойдет и снова получит полную запись от AD. Вы не захотите выбрать два поля, а затем вернуться и выбрать их все, когда вам действительно нужны только два.

Смежные вопросы