Запуск кода от имени другого пользователя
Есть ли способ заставить мой код работать от имени другого пользователя?
Я вызываю NetUserSetInfo через PInvoke, и мне нужно вызвать его как другого пользователя. Есть ли способ сделать это?
4 ответа:
Олицетворение требует вызова некоторых собственных API (а именно LogonUser), поэтому, вероятно, не стоит публиковать 3 страницы кода оболочки. На этой странице приведен полный рабочий пример: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
Обратите внимание, что олицетворение имеет важные соображения безопасности. Убедитесь, что вы следуете рекомендациям.
Эта Статья объясняет это довольно кратко:
Вот фрагмент кода из статьи:
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();
Да олицетворение действительно помогает запускать некоторый код от имени другого пользователя. В моем случае это работает нормально. (Спасибо Милану Матейке)
Я также нашел ссылку Ref. Надеюсь, это поможет вам легко получить пакет от nuget : http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html