MOSS&RMS技术验证方案2

我需要找到文档库中每个文件,用户都有哪些操作权限,写个代码段把文档相关的权限、组、用户都打印出来。测试代码,写的够乱的。 

 

 static void Main(string[] args)
  {
  
   SPSecurity.CodeToRunElevated code = new SPSecurity.CodeToRunElevated(TestCode);
     SPSecurity.RunWithElevatedPrivileges(code);
  }

  public static void TestCode()
  {
   SPSite site = new SPSite("http://mcs-dustyn/Docs");
   SPWeb web = site.AllWebs["Docs"];//打开需要的文档库站点
   // 遍历站点下的每个文档库
   foreach (SPList list in web.Lists)
   {
    if (list.BaseType == SPBaseType.DocumentLibrary)
    {
     SPDocumentLibrary docLibrary = (SPDocumentLibrary)list;
     
     // 就找一个文档库吧
     if (!docLibrary.IsCatalog && list.BaseTemplate != SPListTemplateType.XMLForm && list.Title == "文档")
     {
      // 遍历所有文件夹
      foreach (SPListItem item in docLibrary.Folders)
      {
       Microsoft.SharePoint.SPFolder folder = item.Folder;
       // 遍历文档库中的每个文件
       foreach(SPFile file in folder.Files)
       {
        Console.WriteLine("FileName:" + file.Name + "\tURL:" + file.Url);
        // 搜索文件的所有角色
        foreach (SPRoleAssignment ra in file.Item.RoleAssignments)
        {
         SPPrincipal sp = ra.Member;
         // 遍历文件所属的所有用户角色组
         Console.WriteLine("SPPrincipal[Name:" + sp.Name + ";ID:" + sp.ID+"]");
         // 遍历角色组中的所有角色
         foreach (SPRole role in sp.Roles)
         {
Console.WriteLine("  SPRole[Name:" + role.Name + ";UserCount:"+role.Users.Count.ToString()+";GroupCount:"+role.Groups.Count.ToString()+";ID:" + role.ID + ";Type:" + role.Type.ToString());
          // 遍历角色中的所有用户
          foreach (SPUser user in role.Users)
          {
           Console.WriteLine("    SPUser[Name:" + user.Name+ ";LoginName:" + user.LoginName+";ID:" +user.ID+";Email:" + user.Email + ";Sid:" +user.Sid.ToString() +";RawSid:"+ user.RawSid.ToString());
          }
          foreach (SPGroup group in role.Groups)
          {
           Console.WriteLine("    SPGroup[Name:" + group.Name + ";ID:" + group.ID+ "]");
           foreach (SPUser user1 in group.Users)
           {
            Console.WriteLine("      SPUser[Name:" + user1.Name + ";LoginName:" + user1.LoginName + ";ID:" + user1.ID + ";Email:" + user1.Email + ";Sid:" + user1.Sid.ToString() + ";RawSid:" + user1.RawSid.ToString());
           }
          }
         }
         
        }

       }
      }
     }
    }
   }

   return;

 }

posted @ 2008-09-19 12:34  傅强  阅读(724)  评论(0编辑  收藏  举报