admanager.cs

来自「AD(Active Directory)以不同的数据源显示数据的实现(包含源代码」· CS 代码 · 共 86 行

CS
86
字号
/*
 * Author : 方伍
 * Date: 2007-12-10
 * Blog: http://www.cnblogs.com/binbin1845
 * QQ: 32418201
 * Email: binbin1845@126.com
 */
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.DirectoryServices;
using System.Data;
using System.Windows.Forms;

namespace ADApplication
{
    public class ADManager
    {
        string adAddress;
        string account;
        string password;
        public IList<UserInfo> users;

        public ADManager(string adAddress, string account, string password)
        {
            this.adAddress = adAddress;
            this.account = account;
            this.password = password;
            GetUserData();
        }

        private IList<UserInfo> GetUserData()
        {
            users = new List<UserInfo>();
            DirectoryEntry entry = new DirectoryEntry(adAddress, account, password);
            DirectorySearcher mySearcher = new DirectorySearcher(entry);
            mySearcher.Filter = "(objectClass=user)";
            mySearcher.SearchScope = SearchScope.Subtree;
            try
            {
                SearchResultCollection results = mySearcher.FindAll();
                UserInfo user;
                foreach (SearchResult result in results)
                {
                    user = new UserInfo();
                    user.Account = GetProperty(result, UserInfo.ACCOUNT_AD);
                    user.FirstName = GetProperty(result, UserInfo.FIRSTNAME_AD);
                    user.LastName = GetProperty(result, UserInfo.LASTNAME_AD);
                    user.Email = GetProperty(result, UserInfo.EMAIL_AD);
                    users.Add(user);
                }
            }
            catch
            {
                throw new Exception("Can't connect to Active Directory.");
            }
            return users;
        }

        public object GetDataSource(DataSourceType type)
        {
            DataSourceFactory factory = new DataSourceFactory();
            IDataSource source = factory.CreateDataSource(type);
            foreach (UserInfo user in users)
            {
                source.AddLine(user);
            }

            return source.GetData();
        }

        private static string GetProperty(SearchResult searchResult, string PropertyName)
        {
            if (searchResult.Properties.Contains(PropertyName))
            {
                return searchResult.Properties[PropertyName][0].ToString();
            }
            else
            {
                return string.Empty;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?