2011-12-16 87 views
3

我需要找出當前用戶屬於我的Sharepoint(2007)webpart中的所有AD組的SID。在Sharepoint中查找用戶組的SID

我想用System.DirectoryServices.AccountManagement命名空間:

using (var context = new PrincipalContext(ContextType.Domain)) 
{ 
    using (var user = UserPrincipal.FindByIdentity(context, accountName)) 
    { 
     var groups = user.GetAuthorizationGroups(); 
     ... 
    } 
} 

,但我得到了以下錯誤:

事件ID:10016 通過權限設置(專用)是SID (S-1-5-20)爲地址本地主機的用戶NT AUTHORITY \ NETWORK SERVICE(使用LRPC)未授權激活(本地)CLSID爲 {61738644-F196-11D0-9953-00C04FD919C1} COM服務器應用程序

這可能是固定與此http://support.microsoft.com/kb/899965 但這種方法需要更改註冊表值(應用程序的所有權,所以你可以改變在DCOMCNFG應用值)在DCOMCNFG的COM安全,這不是我的選擇和更高的用戶權限。

是否有另一種方式來訪問在SharePoint當前用戶的羣體的SID?

我真的希望我能在SPContext.Current.Web.CurrentUser.Groups找到這些值,但顯然不是。

回答

1

這裏需要走在SharePoint的方式,而不是用System組件,但在SharePoint的。

每個用戶的SID是在SPUser.Sid性質。正如你想尋找AD組,只有你可以檢查SPUser.IsDomainGroup財產。

現在您只需檢查當前用戶:'SPContext.Current.Web.CurrentUser (a SPUser`對象)。

要回答你的問題如何獲得一個用戶所屬的所有組,你實際上需要使用System.DirectoryServices

因此,在短期:SPUser對象以及查詢的Active Directory通過DirectoryServices

+0

感謝一個你的問題的解決方案被顯示在下面的計算器職位重播。 對於我來說,這個解決方案有一個問題。 在使用System.DirectoryServices時,我需要提供具有AD讀取權限的用戶的用戶名和密碼。 有沒有辦法通過SharePoint訪問與System.DirectoryServices AD而不提供用戶憑據? 例如使用這個構造函數,並留下用戶名和密碼字段爲空並指定特定的認證類型? public DirectoryEntry(string path,string username,string password,AuthenticationTypes authenticationType); – mrtns 2011-12-16 12:44:46

相關問題