如何使用C#登录Active Directory?

时间:2009-02-25 19:56:37

标签: c# .net authentication active-directory

如何在不从当前用户退出的情况下登录AD并获取新登录用户的权限。 (操作系统:Windows XP)

注意:

不要修改AD或类似的东西。只想与C#中的其他用户登录并获得新登录的权限/权限。 (我想不仅在当前线程中使用此权限,还想在整个资源管理器中使用此权限。例如删除文件,创建目录,更改网络选项。)

这可能吗?

4 个答案:

答案 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方法的文档:

http://msdn.microsoft.com/en-us/library/chf6fbt4.aspx