fetch active directory user data using C#(使用 C# 获取活动目录用户数据)
问题描述
我想获取有关特定用户的数据.我知道该用户的 OU 路径,但无法使用该 OU 路径获取信息.它总是说找不到用户.谁能告诉我我需要更改搜索过滤器吗?请帮忙 .
I want to fetch data about particular user . I know the OU path of this user but I can't fetch info using that OU path . It always says that user is not found . Can anyone tell me that do I need to change search filter . Please help .
代码
用户的路径 abc.ds.xyz.net/fGroup/xcxc/Users/123456abc.ds.xyz.net 是 domain 那么 fGroup 是 OU , xcxc 是 OU , Users 是 OU , 123456 是 cn .
path of the user abc.ds.xyz.net/fGroup/xcxc/Users/123456 abc.ds.xyz.net is domain then fGroup is OU , xcxc is OU , Users is OU , 123456 is cn .
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.DirectoryServices;
    using System.DirectoryServices.AccountManagement;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Drawing;
    using System.Windows.Forms;
    namespace Ldap_authentication
    {
       public class Program
       {
         static void Main(string[] args)
         {
            Console.Write("Enter user: ");
            String username = Console.ReadLine();
            try
            {
              DirectoryEntry myLdapConnection = createDirectoryEntry();
              DirectorySearcher search = new DirectorySearcher(myLdapConnection);
              search.Filter = "(&(OU=fGroup)(OU=xcxc )(OU=Users)(cn=" + username + "))";
              SearchResult result = search.FindOne();
              if (result != null)
              {
                ResultPropertyCollection fields = result.Properties;
                foreach (String ldapField in fields.PropertyNames)
                {
                    foreach (Object myCollection in fields[ldapField])
                        Console.WriteLine(String.Format("{0,-20} : {1}",
                                      ldapField, myCollection.ToString  ()));
                }
             }
             else
             {
                // user does not exist  
                Console.WriteLine("User not found!");
                Console.ReadLine();
             }
         }
        catch (Exception e)
        {
            Console.WriteLine("Exception caught:
" + e.ToString());
             Console.ReadLine();
        }
    }
    static DirectoryEntry createDirectoryEntry()
    {
        DirectoryEntry ldapConnection = new DirectoryEntry("abc.ds.xyz.net");
        ldapConnection.Path = "LDAP://DC=abc,DC=ds,DC=xyz,DC=net";
        ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
        return ldapConnection;
    }
   }
  }
编辑
    search.Filter = "(&(OU=fGroup))";
    SearchResult result = search.FindOne();
当我更改 search.Filter = "(&(OU=fGroup)(OU=xcxc )(OU=Users)(cn=" + username + "))";进入 search.Filter = "(&(OU=fGroup))";我得到结果.谁能告诉我如何使用多个搜索输入过滤器进行搜索.
when I change search.Filter = "(&(OU=fGroup)(OU=xcxc )(OU=Users)(cn=" + username + "))"; into search.Filter = "(&(OU=fGroup))"; I get result . Can anyone tell me how to search with multiple search input filter .
推荐答案
在我的头撞墙几个小时后,我终于找到了答案.我需要编写多个搜索过滤器,例如
After hitting my head against a wall for hours and hours finally I found answer . I need to write multiple search filters like
旧代码搜索.Filter = "(&(OU=fGroup))";用这个替换它
Old code search.Filter = "(&(OU=fGroup))"; replace this with this
   search.Filter = "(&(OU=fGroup))";
   search.Filter = "(&(OU=xcxc))";
   search.Filter = "(&(OU=Users))";
   search.Filter = "(&(cn=" + username + "))";
   SearchResult result = search.FindOne();
   Finally found my answer :) . Happy Coding guys :)
                        这篇关于使用 C# 获取活动目录用户数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 C# 获取活动目录用户数据
				
        
 
            
        - WebMatrix WebSecurity PasswordSalt 2022-01-01
 - C#MongoDB使用Builders查找派生对象 2022-09-04
 - 如何用自己压缩一个 IEnumerable 2022-01-01
 - MoreLinq maxBy vs LINQ max + where 2022-01-01
 - 输入按键事件处理程序 2022-01-01
 - 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
 - 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
 - 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
 - C# 中多线程网络服务器的模式 2022-01-01
 - Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
 
						
						
						
						
						
				
				
				
				