Учитывая SID пользователя, как я могу получить их userPrincipalName? - PullRequest
6 голосов
/ 23 марта 2010

У меня есть список идентификаторов безопасности пользователя, и мне нужно получить список userPrincipalName's ... Есть ли способ получить его без загрузки userEntry пользователей и извлечения свойства userPrincipalName?

Мне нужен самый эффективный метод из возможных, потому что это сделано очень много

Ответы [ 2 ]

8 голосов
/ 24 марта 2010

Если вы используете .NET 3.5, ознакомьтесь с этой замечательной статьей MSDN Управление принципами безопасности каталогов в .NET Framework 3.5 .

Показывает новые расширенные возможности поиска в .NET 3.5 System.DirectoryServices.AccountManagement namespace.

Одна приятная особенность - это метод FindByIdentity, который позволяет вам найти пользователя (или группу) на основе идентификатора - будь то имя пользователя, отличительное имя, GUID или SID - это просто работа:

UserPrincipal user = 
  UserPrincipal.FindByIdentity(principalContext,
                               IdentityType.Sid, (value));

Необходимо убедиться, что SID указан в правильном формате - подробности см. В документах MSDN.

Как только у вас есть основной объект пользователя, просто получите его основное имя пользователя:

if(user != null)
{ 
     string upn = user.UserPrincipalName;
}

В примере кода для статьи даже есть два дополнительных вспомогательных метода FindByIdentityGuid и FindByIdentitySid для достижения именно того, что вы ищете!

Пойди проверь его и используй.

0 голосов
/ 23 марта 2010

Вы можете получить это, используя метод LookupAccountSid () для вызова Win32. На странице, на которую я ссылаюсь, приведен пример кода, на котором показан простой пример.

...