以不同的用户身份运行代码(C#)

有没有办法告诉我的代码作为一个不同的用户运行?

我通过一个PInvoke调用NetUserSetInfo,我需要把它作为一个不同的用户。 有没有办法做到这一点?

模仿需要调用一些本地API(即LogonUser),因此可能不值得发布3页的包装代码。 此页面有一个完整的工作示例: http : //platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/

请注意,模拟有重要的安全考虑。 确保您遵循最佳做法。

可能迄今为止我所见过的最好,最干净的代码就是这样

using (Impersonation.LogonUser(domain, username, password, logonType)) { // do whatever you want as this user. } 

只要按照Github或Nuget 。

这篇文章相当简洁地解释说:

以下是文章中的代码片段:

 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(); 

是的模仿确实有助于以不同的用户身份运行一些代码。 它在我的情况下工作正常。 (感谢米兰Matějka)

我还find了一个Ref链接。 希望它能帮助你从nuget轻松获取包裹: http ://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html