Учитывая SID пользователя, как я получаю их userPrincipalName?

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

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

6
задан Max Schmeling 24 March 2010 в 15:58
поделиться

2 ответа

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

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

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

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

Убедитесь, что вы предоставили SID в правильном формате - подробности см. в документации MSDN.

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

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

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

Иди, попробуй и используй.

8
ответ дан 17 December 2019 в 00:07
поделиться

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

-1
ответ дан 17 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: