【问题标题】:Delete user in active directory using c#使用c#删除活动目录中的用户
【发布时间】:2012-02-24 05:48:32
【问题描述】:

我编写了一些代码,但无法正常工作,它会抛出异常“发生操作错误”。 代码--->

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password");
dirEntry.Properties["member"].Remove("username-delete");
dirEntry.CommitChanges();
dirEntry.Close();

给我一​​些想法来摆脱这件事..

【问题讨论】:

  • 您正试图从组中删除成员,看起来......“LDAP 路径”指的是什么?您要删除的用户帐户?一些容器?
  • 是的。我正在尝试从 CN=Users OU 中删除用户帐户。但我不能..
  • 好的,那什么是你在那里使用的“LDAP路径”?你那里有CN=Users,DC=Yourcomapny,dc=com 吗?还是实际用户帐户的 LDAP 路径???
  • 用户帐户不是 CN=Users OU 中的 member - 它是其中的子实体(用户可能是 groups 的成员- 但不是像CN=Users这样的容器。您不能通过从CN=Users的(不存在的)“成员”属性中删除它来删除它

标签: c# active-directory


【解决方案1】:

如果您使用的是 .NET 3.5 及更高版本,则应查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。在此处阅读所有相关信息:

基本上,您可以定义域上下文并在 AD 中轻松找到用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find the user you want to delete
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   user.Delete();
}

新的 S.DS.AM 让在 AD 中与用户和组一起玩变得非常容易!

【讨论】:

  • @Ali:试试这个:user.Enabled = false; user.Save();
  • @Ali 写关于它的新问题
  • 因为这些都是 IDisposable 你应该确保你使用一个'使用'块或 .Dispose()
【解决方案2】:

如果您已经在使用 DirectoryEntry,则不需要 PrincipalContext 或 UserPrincipal。

您可以简单地使用DeleteTree() 方法:

DirectoryEntry dirEntry = new DirectoryEntry("LDAP path", "admin-username", "admin-password");
dirEntry.DeleteTree();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多