Обратите внимание, что олицетворение имеет важные соображения безопасности. Убедитесь, что вы следуете лучшим практикам.
Ответ 2
Вероятно, лучший и самый чистый код, который я когда-либо видел, это:
var credentials = new UserCredentials(domain, username, password);
Impersonation.RunAsUser(credentials, logonType, () =>
{
// do whatever you want as this user.
});
IntPtr accessToken = IntPtr.Zero;
....
//You have to initialize your accessToken with API calling
....
WindowsIdentity identity = new WindowsIdentity(accessToken);
WindowsImpersonationContext context = identity.Impersonate();
...
// Now your code is using the new WindowsLogin and you can do what ever this login can do
...
//Now you can return to your current login of Windows
context.Undo();
Ответ 4
Да. Олицетворение помогает запустить некоторый код в качестве другого пользователя. Он отлично работает в моем случае.
(Благодаря Милану Матейке)