DirectoryEntries.Find:“指定了无效的 dn 语法”

use*_*248 5 c# ldap active-directory

我正在尝试在当前域中查找用户。代码是这样的:

DirectoryEntry domain = new DirectoryEntry("LDAP://CN-Users, DC=" + Environment.UserDomainName);
            DirectoryEntries entries = domain.Children;
            try
            {
                // The following line causes the exception
                DirectoryEntry user = entries.Find("(&(objectCategory=user)(cn=" + userName + "))", ActiveDirectoryEntryType.User.TypeName);
                user.DeleteTree();
                user.CommitChanges();
            }
            catch
            {}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

An invalid dn syntax has been specified.
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下代码并得到了同样的错误:

DirectoryEntry user = entries.Find(userName, ActiveDirectoryEntryType.User.TypeName);
Run Code Online (Sandbox Code Playgroud)

我在帮助文件中找不到有关正确语法的信息。有谁知道这是怎么做的?

Pio*_*app 4

您的此声明有错误:

DirectoryEntry domain = new DirectoryEntry("LDAP://CN-Users, DC=" + Environment.UserDomainName);
Run Code Online (Sandbox Code Playgroud)

我几乎确定它应该是:LDAP://CN=Users,instaed ofLDAP://CN-Users,

第二件事DC=" + Environment.UserDomainName可能是错误的,因为通常它是这样的:(LDAP://OU=Finance,dc=fabrikam,dc=com有多个 DC)

您可以使用 powershell 找到所有 DC。运行以下命令:

New-Object DirectoryServices.DirectoryEntry
Run Code Online (Sandbox Code Playgroud)