克隆SharePoint角色组

3
我想写一个C#应用程序来克隆SharePoint MOSS2007角色组(及其权限),但我不知道从哪里开始。MOSS2007在开发方面似乎文档很少,尽管我已经广泛地搜索了这个问题,但仍然不知道从哪里开始尝试。我希望这里有人做过类似的事情和/或足够了解SharePoint库,能够提供一个良好的参考点。对于这个基础问题以及未提供更多信息,我表示诚挚的歉意 - 如果我有其他信息的话,我会提供的!
2个回答

4

在“克隆”SharePoint安全组时,首先需要了解的不是组本身,而是权限。

这些权限作为角色分配存储在SPWeb对象中。首先,您必须通过执行以下操作找到要克隆的组:

SPGroup group = spWeb.Groups["name group"];

那么您需要使用获取的组来获取SPWeb对象上的角色分配。
SPRoleAssignment ass = spWeb.RoleAssignments.GetAssignmentByPrincipal(group2);

那么您只需要创建一个新的SPGroup,并将该组添加到roleassignment和roleassignment添加到web对象中:

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
          }          
    }                  
 }    
 } 
}

2
这个如何进行身份验证?我猜想你只需要在ISS服务器上运行它? - Michael A
2
你打算如何处理组对象?上面的示例仅展示了如何克隆组,而不是如何访问SharePoint。你可以创建一个控制台应用程序来访问你的SharePoint环境。 - Tjassens
1
抱歉,看起来我已经超出了我的能力范围。我应该阅读哪些内容来学习如何做到这一点? - Michael A
1
呵呵,没问题 :) 我会把这个加到我的原始答案里,给我一秒钟 ;) - Tjassens
1
确实需要使用您运行它的帐户,并且您需要足够的权限来这样做。请确保该帐户在SharePoint环境中具有完全控制权限,因此管理员帐户可能是可以的... - Tjassens
显示剩余7条评论

1

当您想要远程编辑、更改或添加组时,确实可以使用 Web 服务。您需要的 Web 服务是 usergroup.asmx。您可以通过在 SharePoint 中简单地调用它来查找此 Web 服务的方法。

因此,请浏览:http://MySharePointSite/_vti_bin/usergroup.asmx

这将为您提供服务的所有可用方法列表。从应用程序连接到 Web 服务可以通过以下方式完成:

http://msdn.microsoft.com/en-us/library/ms458094.aspx

这会告诉您如何与用户组 Web 服务进行交互:

http://msdn.microsoft.com/en-us/library/ms412944.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接