DirectoryEntry CommitChanges()引发访问被拒绝错误

时间:2018-11-13 05:58:10

标签: c# winforms active-directory

我正在项目中的Active Directive Role修改模块上工作,并且在添加/删除用户角色时出现Access拒绝错误。我是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();

1 个答案:

答案 0 :(得分:0)

对于一个来说,这是行不通的:

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

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

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

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