2012-09-17 58 views
1

我想檢查一下特定用戶是否具有特定服務應用程序的權限,但我沒有太多運氣。到目前爲止,我已成功地檢查當前用戶具有類似的代碼以下權限:如何檢查服務應用程序的權限?

SPCentralAdministrationSecurity security = serviceApp.GetAdministrationAccessControl(); 
var acl = security.ToAcl(); 
bool hasAccess = acl.DoesUserHavePermissions(SPCentralAdminRights.FullControl); 

但是,就像我說的,我需要檢查特定用戶的權限,不一定是當前用戶。有誰知道一種方法來完成這個?

編輯:

我有點不明白,ACL實際上是一個列表。我通過它找到了服務應用程序的管理員,這是戰鬥的一半!但我仍然需要找到權限下列出的帳戶,以查看哪些帳戶可以調用服務應用程序。任何幫助表示讚賞。

+0

可能重複[如何獲得2010年的SharePoint服務應用程序的權限(http://stackoverflow.com/questions/12410481/how-to-get-service-application-permissions-在SharePoint的-2010) – Rawling

回答

0

經過一番研究,我找到了答案!下面是詳細的代碼:的

foreach (SPService service in SPFarm.Local.Services) 
{ 
    if (service.Name.Equals("ServiceName")) 
    { 
     foreach (SPServiceApplication serviceApp in service.Applications) 
     { 
      //This gets the service app administrators 
      SPCentralAdministrationSecurity serviceAppSecurity = serviceApp.GetAdministrationAccessControl(); 
      SPAcl<SPCentralAdministrationRights> adminAcl = serviceAppSecurity.ToAcl(); 

      foreach (SPAce<SPCentralAdministrationRights> rights in adminAcl) 
      { 
       //Handle users 
      } 

      //This gets the users that can invoke the service app 
      SPIisWebServiceApplication webServiceApp = (SPIisWebServiceApplication) app; 
      SPIisWebServiceApplicationSecurity webServiceAppSecurity = webServiceApp.GetAccessControl(); 
      SPAcl<SPIisWebServiceApplicationRights> invokerAcl = webServiceAppSecurity.ToAcl(); 

      foreach (SPAce<SPIisWebServiceApplicationRights> rights in invokerAcl) 
      { 
       //Handle users 
      } 
     } 
    } 
} 
相關問題