[英]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
属性是member
的distinguishedName
属性的列表,而不是其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.