У меня есть список идентификаторов безопасности пользователя, и я должен добраться, список userPrincipalName's... является там каким-либо способом, которым я могу получить его, не загружая пользователей DirectoryEntry и вытянув в userPrincipalName свойстве?
Мне нужен наиболее эффективный способ, возможный, потому что это сделано много
Если вы используете .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
для достижения именно то, что вы ищете!
Иди, попробуй и используй.
Вы можете получить это, используя метод LookupAccountSid () для вызова Win32. На странице, на которую я ссылаюсь, есть образец кода, который показывает простой пример.