Выход из системы после входа в систему на C # - PullRequest
5 голосов
/ 03 октября 2011

Я использую метод logonuser advapi32.dll для доступа к данным через нашу сеть.
Я знаю, что это меняет пользователя потока на информацию, которую я ему предоставляю, но мне было интересно, есть ли способ изменить это.
Я хочу получить доступ к данным, а затем вернуться к учетным данным локального пользователя.

Ответы [ 2 ]

7 голосов
/ 03 октября 2011

Некоторое время назад я создал небольшой класс имитатора .

В основном вы переносите код для выполнения под другим пользователем просто внутри блока using:

using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
   ...

   <code that executes under the new context>

   ...
}

Очень хорошо работал для моих проектов.

1 голос
/ 03 октября 2011

Вы можете позвонить RevertToSelf.

Тем не менее, есть кое-что, что нужно сказать, чтобы раскрутить специальный поток для задания подражания и завершить его, когда работа по подражанию будет завершена. Это разделит работу по олицетворению, так что если какие-либо обратные вызовы или сообщения будут обрабатываться в основном потоке, они будут выполняться в контексте основного пользователя, а не олицетворенного пользователя. На самом деле, чем больше я думаю об этом, тем сильнее чувствую, что решение - это отдельная тема.

...