查找spdocument库的管理员

时间:2011-10-18 16:12:37

标签: c# sharepoint

我有一个文档库,它没有包含站点权限(设置了自定义权限)。现在我想找出谁拥有使用C#的这个库的管理员权限。

我需要列出我拥有管理员权限的用户ID。

谢谢,

1 个答案:

答案 0 :(得分:0)

没有列表管理员这样的东西。但是,您可以通过以下方式获取具有管理列表权限的用户和组:

SPList list = // get your list
IEnumerable<SPPrincipal> admins = list.RoleAssignments.Cast<SPRoleAssignment>()
  .Where(ra =>
    ra.RoleDefinitionBindings.Cast<SPRoleDefinition>()
      .Any(r => (r.BasePermissions & SPBasePermissions.ManageLists) == SPBasePermissions.ManageLists))
  .Select(ra => ra.Member);

更新:

可以通过相应的SPFolder检查SPListItem的权限。这可以通过SPFolder.Item属性检索。由于SPListItemSPList都继承自SPSecurableObjectSPListItem的检查与上述相同。

要区分SPUserSPGroup,只需检查SPRoleAssigment.Member的类型:

IEnumerable<SPUser> adminUsers = admins.OfType<SPUser>();

请注意,SPUser对象可以表示AD安全组。这可以通过SPUser.IsDomainGroup属性进行检查。