Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找用户';Sharepoint中的组SID_C#_Sharepoint_Active Directory - Fatal编程技术网

C# 查找用户';Sharepoint中的组SID

C# 查找用户';Sharepoint中的组SID,c#,sharepoint,active-directory,C#,Sharepoint,Active Directory,我需要在我的Sharepoint(2007)Web部件中找出当前用户所属的所有广告组SID 我想使用System.DirectoryServices.AccountManagement命名空间: using (var context = new PrincipalContext( ContextType.Domain )) { using (var user = UserPrincipal.FindByIdentity( context, accountName )) {

我需要在我的Sharepoint(2007)Web部件中找出当前用户所属的所有广告组SID

我想使用System.DirectoryServices.AccountManagement命名空间:

using (var context = new PrincipalContext( ContextType.Domain ))
{
    using (var user = UserPrincipal.FindByIdentity( context, accountName ))
    {
        var groups = user.GetAuthorizationGroups();
        ...
    }
}
,但我得到以下错误:

活动编号:10016 通过权限设置(特定于应用程序),用户NT权限\地址为localhost(使用LRPC)的网络服务的SID(S-1-5-20)无权为具有CLSID的COM服务器应用程序激活(本地) {61738644-F196-11D0-9953-00C04FD919C1}

这可以用这个来解决 但这种方法需要更改注册表值(应用程序的所有权,这样您就可以在dcomcnfg上更改应用程序的值)以及dcomcnfg的COM security上的用户权限,这对我来说不是一个选项

是否有其他方法可以访问Sharepoint中当前用户的组SID


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

您需要走SharePoint的路,不要使用
系统
程序集,而是使用SharePoint程序集

属性中包含每个用户的SID。由于您只想查找广告组,因此可以检查
SPUser
.IsDomainGroup
属性

现在,您只需检查当前用户:`SPContext.current.Web.CurrentUser
(一个
SPUser`object)

要回答如何获取用户所属的所有组的问题,您实际上需要使用
System.DirectoryServices
。以下stackoverflow帖子中显示了您问题的解决方案:


简而言之:
SPUser
对象,以及通过
DirectoryServices

查询Active Directory,感谢您的重播。对我来说,这个解决方案有一个问题。在使用System.DirectoryServices时,我需要提供具有AD读取权限的用户的用户名和密码。是否有一种方法可以通过SharePoint通过System.DirectoryServices访问广告,而不提供用户凭据?例如,使用此构造函数,将用户名和密码字段留空,并指定特定的身份验证类型?public DirectoryEntry(字符串路径、字符串用户名、字符串密码、AuthenticationTypes authenticationType);指定具有读取权限的用户有什么问题?例如,您可以允许Sharepoint应用程序池的用户读取active directory或为此创建专用用户。谢谢,除了向DirectoryEntry对象提供凭据之外,我看不到其他选项。