我有一个文档库,它没有包含站点权限(设置了自定义权限)。现在我想找出谁拥有使用C#的这个库的管理员权限。
我需要列出我拥有管理员权限的用户ID。
谢谢,
答案 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
属性检索。由于SPListItem
和SPList
都继承自SPSecurableObject
,SPListItem
的检查与上述相同。
要区分SPUser
与SPGroup
,只需检查SPRoleAssigment.Member
的类型:
IEnumerable<SPUser> adminUsers = admins.OfType<SPUser>();
请注意,SPUser
对象可以表示AD安全组。这可以通过SPUser.IsDomainGroup
属性进行检查。