在SharePoint中,我们有3个预定的权限组:
在/_layouts/permsetup.aspx页面中进行设置。
(网站设置 - >人员和群组 - >设置 - >设置群组)
如何以编程方式获取这些组名?
(页面逻辑被Microsoft混淆,因此在Reflector中无法做到)
答案 0 :(得分:9)
SPWeb类上有一些属性:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.associatedmembergroup.aspx
答案 1 :(得分:5)
我发现各种“Associated ......”属性通常都是NULL。唯一可靠的方法是使用SPWeb上的属性包:
vti_associatevisitorgroup
vti_associatemembergroup
vti_associateownergroup
要将它们转换为SPGroup对象,您可以使用:
int idOfGroup = Convert.ToInt32(web.Properties["vti_associatemembergroup"]);
SPGroup group = web.SiteGroups.GetByID(idOfGroup);
然而,作为Kevin mentions,关联可能会丢失,这会在上面的代码中抛出异常。更好的方法是:
通过确保您要查找的媒体确实存在,检查网络上是否已设置关联。
检查属性给出的ID实际存在的组。删除对SiteGroups.GetByID的调用,而是遍历SiteGroups中的每个SPGroup以查找ID。
更强大的解决方案:
public static SPGroup GetMembersGroup(SPWeb web)
{
if (web.Properties["vti_associatemembergroup"] != null)
{
string idOfMemberGroup = web.Properties["vti_associatemembergroup"];
int memberGroupId = Convert.ToInt32(idOfMemberGroup);
foreach (SPGroup group in web.SiteGroups)
{
if (group.ID == memberGroupId)
{
return group;
}
}
}
return null;
}
答案 2 :(得分:3)
嘿那里,我是凯文,我是微软的SharePoint权限PM。
DJ的答案是完全正确的,但我警告说,根据你正在做的事情,这可能不是最强大的使用方法。用户可以吹走这些组,这些关联将会丢失。我肯定会在你为它们提取的任何内容中构建一些备份逻辑。