有没有办法告诉我的代码为不同的用户身份运行?
我通过的PInvoke呼叫NetUserSetInfo,我需要调用它为不同的用户。 有没有办法做到这一点?
有没有办法告诉我的代码为不同的用户身份运行?
我通过的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)
我还发现了一个参考链接。 希望它会帮助你很容易地从的NuGet包: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html