繁体   English   中英

DirectoryEntry CommitChanges() 抛出拒绝访问错误

[英]DirectoryEntry CommitChanges() is throwing Access Denied error

我正在我的项目中处理 Active Directive 角色修改模块,并在添加/删除用户角色时收到拒绝访问错误。 我是 AD 服务器的管理员。

我注意到下面给出的一个方案。

1:AD中添加的新用户,没有任何角色。

2:为用户应用任何角色 -(获取错误访问被拒绝)

3:如果应用超级用户角色,则角色添加成功。

代码如下

  // Search for role in Adam.
        DirectorySearcher directorySearcher = new DirectorySearcher(GetAdamSdsRoot());
        directorySearcher.Filter = "(&(objectCategory=group)(cn=" + roleName + "))";
        SearchResult searchResult = directorySearcher.FindOne();

        // Remove user from role.
        DirectoryEntry directoryEntry = searchResult.GetDirectoryEntry();
        directoryEntry.Properties["member"].Remove("<SID=" + GetActiveDirectoryUserSid(userName) + ">");
        directoryEntry.CommitChanges();

首先,这是行不通的:

directoryEntry.Properties["member"].Remove("<SID=" + GetActiveDirectoryUserSid(userName) + ">");

member属性是memberdistinguishedName属性的列表,而不是其SID。 因此,您需要删除用户的distinguishedName ,而不是SID。

但是,如果那是唯一的问题,则不会出现“拒绝访问”的例外。

我知道您说您是管理员,但是您是否在管理员凭据下运行它?

我知道这个线程是旧的。 但最近我在与 AD 的 API 集成中工作,以编程方式创建用户并将其更新为本地 AD(在 Windows Server 2012 R2 上)。

我遇到了这个问题:访问被拒绝错误。

在更好地了解 LDAP 连接处理后,我发现以正确的方式制作它,我们解决了它。 下一篇文章是我对这个场景的基础。 一个很好的例子。

https://ianatkinson.net/computing/adcsharp.htm#ex5(create_user部分)。

希望这对其他人有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM