Как получить имя и фамилию вошедшего в систему пользователя Windows?

Как я могу получить свое имя, фамилию с помощью c # в моей системе (вход в Windows с именем пользователя и паролем Active Directory)?

Можно ли это сделать? без перехода в AD?

38
задан TylerH 1 February 2018 в 20:31
поделиться

1 ответ

Если вы используете .Net 3.0 или выше, есть прекрасная библиотека, которая делает это практически напиши сам. System.DirectoryServices.AccountManagement имеет объект UserPrincipal , который получает именно то, что вы ищете, и вам не нужно возиться с LDAP или переходить к системным вызовам, чтобы сделать это. Вот все, что потребуется:

Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal principal = (WindowsPrincipal)Thread.CurrentPrincipal;
// or, if you're in Asp.Net with windows authentication you can use:
// WindowsPrincipal principal = (WindowsPrincipal)User;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
    UserPrincipal up = UserPrincipal.FindByIdentity(pc, principal.Identity.Name);
    return up.DisplayName;
    // or return up.GivenName + " " + up.Surname;
}

Примечание: на самом деле вам не нужен принципал, если у вас уже есть имя пользователя, но если вы работаете в контексте пользователя, его так же легко получить оттуда.

56
ответ дан 27 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

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