下午解决了一个问题

我们定制的基于SharePoint Service的站点中的用户管理,在增加新用户时包含了两个动作:1、通过.Net中的DirectoryService在相应的OU(我们给每个客户分配了一个OU,以便于管理)中增加一个用户;2、把第1步创建的用户增加到当前SharePoint站点的用户中 在做第一步时遇到一个问题,因为新增用户这个操作是给用户站点的管理员进行的,而用户站点管理员这个用户帐号在服务器上并不是属于Domain Admin的角色,所以是没有通过Active Directory新增用户帐号的权限的。 解决方法是利用角色模拟,在需要新增域中的用户时,模拟一个具有这个权限的用户进行模拟,完成这个操作后,再结束模拟。 WindowsIdentity类是用来描述Windows用户的类,它有一个方法Impersonate(),可以模拟某一用户,但是它需要一个IntPtr类型的表示要模拟的用户的Token Handle来作为参数,这时需要用到Win API来得到这个Handle,所以自己又写了一个类来封装这个操作。 示范代码:// IdentityImpresonation是自定义的用来表示用户模拟的类,构造函数// 参数分别为:要模拟的用户的用户名、密码、所在域(或机器名)IdentityImpersonation imper = new IdentityImpersonation(“tsg”, “123456″, “webreal”);imper.BeginImpersonation();// 进行某些操作imper.StopImpersonation(); 这个类的源码:http://blog.joycode.com/kaneboy/posts/3801.aspx
原文地址:https://www.cnblogs.com/kaneboy/p/2333711.html