在Sharepoint中查找用户组sid
本文关键字:用户组 sid 查找 Sharepoint | 更新日期: 2023-09-27 18:18:15
我需要找出当前用户属于我的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 '网络服务的SID (S-1-5-20)地址localhost(使用LRPC)没有被授权激活(本地)的COM服务器应用程序与CLSID{61738644 - f196 - 11 - d0 - 9953 - 00 - c04fd919c1}
这个问题可以通过http://support.microsoft.com/kb/899965解决但是这种方法需要更改注册表值(应用程序的所有权,所以你可以在dcomcnfg中更改应用程序的值),然后在dcomcnfg的COM安全中更改用户权限,这对我来说不是一个选择。
是否有另一种方法来访问Sharepoint内当前用户组的sid ?
我真的希望我能在SPContext.Current.Web.CurrentUser中找到这些值。
你需要走SharePoint的方式,不使用System
程序集,而是使用SharePoint程序集。
每个用户的SID在SPUser.Sid
属性中。如果您只想查找AD组,则可以检查SPUser
的.IsDomainGroup
属性。
现在您需要做的就是检查当前用户:` SPContext.Current.Web。当前用户(a
SPUser ' object).
要回答如何获得用户所属的所有组的问题,实际上将需要使用System.DirectoryServices
。您的问题的解决方案显示在以下stackoverflow帖子:
- 在c#中,如何访问活动目录以获得某个用户所属的组列表?
- 查询AD查找用户的所有组-缺少一个组
所以简而言之:SPUser
对象以及通过DirectoryServices
查询活动目录