Как получить логин NT из объекта AD UserPrincpal? - PullRequest
0 голосов
/ 11 ноября 2011

Рассмотрим следующий упрощенный пример кода:

Principal p = .. // from business logic
UserPrincipal user = (p as UserPrincipal);

Как я могу получить логин NT для пользователя. т.е.: DOMAIN \ UserName

1 Ответ

2 голосов
/ 11 ноября 2011

Компонент имени пользователя, который вы можете получить от user.SamAccountName. Компонент домена не так прост, как на самом деле не атрибут пользователя.

Вероятно, проще всего получить SID пользователя, а затем использовать класс NTAccount для его взлома. Нечто подобное должно работать - я просто набрал его здесь, хотя, возможно, придется немного его настроить:

DirectoryEntry rawEntry = user.GetUnderlyingObject();
byte[] sidBytes = (byte[])user.Properties["objectSID"].Value;

SecurityIdentifier mySid = new SecurityIdentifier(sidBytes, 0);

NTAccount ntAccount = (NTAccount)mySid.Translate(typeof(NTAccount));

string domainWhackUsername = ntAccount.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...