Как я могу получить свое имя, фамилию с помощью c # в моей системе (вход в Windows с именем пользователя и паролем Active Directory)?
Можно ли это сделать? без перехода в AD?
Если вы используете .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;
}
Примечание: на самом деле вам не нужен принципал, если у вас уже есть имя пользователя, но если вы работаете в контексте пользователя, его так же легко получить оттуда.