при «клонировании» группы безопасности SharePoint в первую очередь речь идет не о самой группе, а о разрешениях.
Эти разрешения сохраняются в качестве ролевых назначений для объекта SPWeb.Сначала вы должны найти группу, которую хотите клонировать, выполнив:
SPGroup group = spWeb.Groups["name group"];
Затем вы должны использовать эту извлеченную группу для получения ролей назначения для объекта SPWeb.
SPRoleAssignment ass = spWeb.RoleAssignments.GetAssignmentByPrincipal(group2);
Затем вынеобходимо просто создать новую группу SPGroup и добавить группу к назначению роли и назначению роли к веб-объекту:
spWeb.SiteGroups.Add(groupName, user, user, groupDescription);
SPGroup newGroup = spWeb.SiteGroups[groupName];
SPRoleAssignment roleAssignment = new SPRoleAssignment(newGroup);
//add role to web
spWeb.RoleAssignments.Add(roleAssignment);
spWeb.Update();
После этого у вас должна быть новая группа с теми же разрешениями, что и у исходной группы.
Если вы не выполняете вышеуказанное в функции sharepoint или что-то еще, вы можете сделать это из консольного приложения.Просто создайте консольное приложение в VS и заполните его примерно так:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
using (SPSite spSite = new SPSite("http://yoururl"))
{
using (SPWeb spWeb = spSite.RootWeb)
{
//perform the code to clone the group here
}
}
}
}
}