我需要在Sharepoint(2007)webpart中找出当前用户所属的所有AD组SID。
我想使用System.DirectoryServices.AccountManagement命名空间:
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var user = UserPrincipal.FindByIdentity( context, accountName ))
{
var groups = user.GetAuthorizationGroups();
...
}
}
,但我收到以下错误:
事件ID:10016 通过权限设置(特定于应用程序)是用户NT AUTHORITY \ NETWORK SERVICE的SID(S-1-5-20)地址localhost(使用LRPC)无权为具有CLSID的COM服务器应用程序激活(本地) {61738644-F196-11D0-9953-00C04FD919C1}
这可以通过此http://support.microsoft.com/kb/899965修复 但是这种方法需要更改注册表值(应用程序的所有权,因此您可以在dcomcnfg更改应用程序值)以及更高版本的dcomcnfg COM安全性的用户权限,这对我来说不是一个选项。
是否有其他方法可以在Sharepoint中访问当前用户的组SID?
我真的希望我能在SPContext.Current.Web.CurrentUser.Groups中找到这些值,但显然不是。
答案 0 :(得分:1)
您需要在此处使用SharePoint方式,而不是使用System
程序集,而是使用SharePoint程序集。
每个用户的SID位于SPUser.Sid
属性中。由于您只想查找AD群组,因此您可以查看.IsDomainGroup
的{{1}}属性。
现在您需要做的就是检查当前用户:'SPContext.Current.Web.CurrentUser SPUser
SPUser`对象)。
要回答您的问题如何获取用户所属的所有群组,您实际 需要使用(a
。您的问题的解决方案显示在以下stackoverflow帖子中:
简而言之:System.DirectoryServices
对象以及通过SPUser
查询Active Directory