如何在不从当前用户退出的情况下登录AD并获取新登录用户的权限。 (操作系统:Windows XP)
不要修改AD或类似的东西。只想与C#中的其他用户登录并获得新登录的权限/权限。 (我想不仅在当前线程中使用此权限,还想在整个资源管理器中使用此权限。例如删除文件,创建目录,更改网络选项。)
这可能吗?
答案 0 :(得分:3)
在给定有效的用户名和密码的情况下,您可以使用模拟将线程标识更改为其他用户。除了手动以其他用户身份登录之外,无法更改整个shell的用户身份,但是在您模拟的线程上执行的任何操作都将获得新权限。
.NET 1.1方式,使用P / Invoke:
.NET 2+方式,使用Thread.CurrentPrincipal:
答案 1 :(得分:0)
也许this article可能会有所帮助。这是WindowsImpersonationContext
的教程。
答案 2 :(得分:0)
使用LogonUser进行模拟。这需要你有密码。
答案 3 :(得分:0)
您可以通过P / Invoke层调用LogonUser API函数,然后将返回的句柄传递给WindowsIdentity类上的Impersonate方法。有关如何执行此操作的详细信息,请参阅位于此处的WindowsIdentity类上的Impersonate方法的文档: