Как я могу войти в Active Directory с помощью C #? - PullRequest
2 голосов
/ 25 февраля 2009

Как я могу войти в AD без выхода из системы текущего пользователя и получить права нового зарегистрированного пользователя. (ОС: Windows XP)

Примечание:

Не изменять AD или что-то в этом роде. Только хочу войти в систему с другим пользователем из C # и получить разрешения / права для нового входа. (Я хочу использовать эти права не только в текущем потоке, но и во всем проводнике. Например, удаление файлов, создание каталогов, изменение параметров сети.)

Возможно ли это?

Ответы [ 4 ]

3 голосов
/ 25 февраля 2009

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

.NET 1.1, используя P / Invoke:

Способ .NET 2+ с использованием Thread.CurrentPrincipal:

0 голосов
/ 25 февраля 2009

Посмотрите, как использовать LogonUser для олицетворения. Для этого вам потребуется пароль.

0 голосов
/ 25 февраля 2009

Вы должны вызвать функцию LogonUser API через слой P / Invoke, а затем передать дескриптор, возвращенный методу Impersonate в классе WindowsIdentity. Подробная информация о том, как это сделать, содержится в документации по методу Impersonate класса WindowsIdentity, расположенной здесь:

http://msdn.microsoft.com/en-us/library/chf6fbt4.aspx

0 голосов
/ 25 февраля 2009

Может быть эта статья может быть полезна. Это учебник по WindowsImpersonationContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...