2011-03-02 4 views
2

나는 특정 사용자프로그래밍 방식

using (SPSite site = new SPSite(SPContext.Current.Web.Url)) 
      { 
       SPWeb web = site.OpenWeb(); 
       SPFolderCollection folders = web.Folders;; 
       foreach (SPFolder folder in web.Folders) 
       { 


        lblFolder.Text += "<br/><STRONG>" + folder.Name + "</STRONG> 

<br/>"; 
foreach (SPRoleAssignment folderRole in folder.Item.RoleAssignments) 
         { }// throws exception object specifies does not belong to list 



       } 

뿐만 아니라 이름에 대한 사이트의 모든 폴더 (숨겨져)의 액세스 권한에 노력하고 특정 사용자의 모든 셰어 폴더 사용 권한을 얻기하지만 난 그에 대한 사용 권한이 필요합니다 폴더, 제발 도와주세요 !!

감사

+0

중복? http://stackoverflow.com/questions/302279/sharepoint-how-to-programmatically-manage-spfolder-and-splistitem-permissions –

+1

중복되지는 않지만 답변은 다른 게시물에 있습니다 -'folder.Item.RoleAssignments' –

+0

while (folder.Item.RoleAssignments.Count> 0)을 사용할 때 "오류가 발생했습니다."오류 'Microsoft.SharePoint.SPRoleAssignmentCollection'에 'Count'및 확장 메서드가없는 'Count'에 대한 정의가 포함되어 있지 않습니다. 'Microsoft.SharePoint.SPRoleAssignmentCollection'형식의 첫 번째 인수를 찾을 수 있습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) " – chuck

답변

0

SPWeb.Folders 다음의 없음 (_catalogs, 목록, ...처럼) 당신에게 당신의 웹 사이트의 "하위 폴더"의 모음을 제공하는 관련 목록 항목, 공유와 같은 그들 중 일부가 문서에는 연결된 목록이있을 수 있지만이 경우 목록 항목이없는 루트 폴더입니다 (권한은 목록에서 직접 가져옵니다).

그래서 항목이 null의 경우 구문 분석 하위 폴더에 의해 당신은 폴더를 잡는 것 재귀

+0

foreach (SPRoleAssignment assignment = folder.Item.RoleAssignments) { Console.WriteLine '{0}' ", assignment.Member.LoginName); // 정말 고마워요. – chuck

0

을 계속 한 후 (이 Guid.Empty 아니라면 목록을 얻을 아마이 경우 사용 ParentListId에서)하고 확인해야합니다을 때 어쩌면 당신이해야 문서 라이브러리의 목록 항목을 가져 오는 중입니까? 즉, 그들은 상층으로부터 상속 받았다고 가정합니다.

using (SPSite site = new SPSite(SPContext.Current.Web.Url)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Documents"]; 
     SPQuery qry = new SPQuery(); 
     qry.Query = "<Where><Eq><FieldRef Name='Title'><Value Type='Text'>"+title+"</Value></Eq></Where>"; 
     SPListItemCollection docColl = new SPListItemCollection(qry); 
     List<string> perms = new List<string>(); 

     if (docColl.Count > 0) 
     { 
      SPListItem fldrItem = docColl[0]; 
      if (fldrItem.RoleAssignments.Count > 0) { 

       SPRoleAssignmentCollection assignColl = fldrItem.RoleAssignments; 
       foreach (SPRoleAssignment assignment in assignColl) 
       { 
        perms.Add(assignment.Member.LoginName); 
        Console.WriteLine("Perms: " + assignment.Member.LoginName); 
       } 
      } 
     } 
    } 
}