2 通过.NET Framework访问活动目录( 二 )
SetLastError=true)]public
extern static int DuplicateToken(IntPtr hToken, int impersonationLevel,
ref IntPtr hNewToken);
#endregion
图1.5 建立扮演
首先,我们需要从advapi32.dll中导入新的方法,其中包括一些有用的常量 。名字为impersonationContext的变量将用来保持扮演操作之前的Windows用户 。
这样,我们就建立了扮演,下面是一个如何使用它的例子:
if(impersonateValidUser(this.LoginUsername, this.DomainName,
this.loginPassword)) {
//在这里插入在指定用户的安全环境下运行的代码
//不要忘记取消扮演
undoImpersonation();
} else {
//扮演操作失败了,插入保证失败后系统安全的机制
}
图1.6 扮演的使用
我们只需要简单地以有效的用户名和口令调用impersonateValidUser方法,来扮演该用户 。从现在开始,只到调用undoImpersonation()之后,我们将以给定的用户名执行所有的操作 。
为了使ASP.NET下的扮演操作能够正常地工作,我们应当改变Machine.config(c:winntmicrosoft.netframeworkv%VERSION%configmachine.config)中的processModel节点,其中的username属性必须被设置成System 。
结束语
本篇文章所论述的是使用System.DirectoryServices名字空间完成一个能够完全地运行的、面向任何提供商AD的DAL所必需的基本内容 。在实际应用中,可以对该例子进行改变,使这更符合我们的要求 。需要记住的是,对于任何能够实际使用的DAL,它不应当只局限于包括正常的数据库提供者在内的一种服务提供者 。我们应当能够交换DAL 。
看过本篇文章后,读者可能感到有一种意犹未尽的感觉 。读者可能希望在其中添加组管理的功能,其中包括组的创建、编辑和删除,并显示每个用户所属的组以及每个组中的用户 。不过这些都需要通过COM Interop才能完成,请读者自行参阅有关资料 。
推荐阅读
- 洋槐蜜怎么辨别真假
- 1 通过.NET Framework访问活动目录
- 手机上怎么看银行卡余额 怎么通过手机查询银行卡余额
- 苹果手表怎么睡眠监测
- 极速幻境第四章路线怎么通过
- 乐花卡为什么未通过审核
- Win 2003中配置ASP.net环境
- 驯服Windows Server 2003
- 快速学粤语方法
- pr怎么输出最高画质