查找spdocument库的Admin

本文关键字:Admin 库的 spdocument 查找 | 更新日期: 2023-09-27 18:11:31

我有一个没有继承站点权限的文档库(设置了自定义权限)。现在我想知道谁有使用c#访问这个库的管理员权限。

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

谢谢,

查找spdocument库的Admin

不存在列表管理员这种东西。但是你可以获得具有管理列表权限的用户和组:

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都继承自SPSecurableObject,因此对SPListItem的检查与上面描述的相同。

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

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

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