根據當前登錄域賬號 獲取AD用戶姓名和所在OU目錄


  #region 根據當前登錄域賬號 獲取AD用戶姓名和所在OU目錄
        /// <summary>
        /// 根據當前登錄域賬號 獲取AD用戶姓名和所在OU目錄   返回域用戶是否存在
        /// </summary>
        /// <param name="searchUser">要搜索的當前用戶名</param>
        /// <param name="paths">out返回該用戶所在OU目錄</param>
        /// <param name="userName">out 返回該用戶的姓名</param>
        /// <returns>搜索域用戶是否存在</returns>
        public static bool GetADUserNameAndPaths(string searchUser, out List<string> paths, out string userName)
        {
            bool isExite = false;//該域用戶是否 存在。。。
            DataContextProvider.loger.Info(string.Format(">>>>>>>>>>>>>>>>>>>>>>>>>>>獲取當前域用戶信息log>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>start>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"));
            DirectoryEntry entry = null;
            string name = "未知";
            List<string> directorys = null;
            try
            {
                //讀取配置文件...連接登錄域服務器
                //"LDAP://10.2.17.*"   域服務器地址
                //登錄名
                //密碼
                DataContextProvider.loger.Info(string.Format("域服務地址:{0}、、域賬號:{1}、、域密碼{2}、、", ConfigHelper.DomainAddress, ConfigHelper.DomainAccount, ConfigHelper.DomainPassWord));
                using (entry=new DirectoryEntry(ConfigHelper.DomainAddress, ConfigHelper.DomainAccount, ConfigHelper.DomainPassWord, AuthenticationTypes.Secure))
                {
                    if (entry != null)
                    {
                        DirectorySearcher mySearcher = new DirectorySearcher(entry);
                        mySearcher.Filter = ("(&(|(objectClass=user)(objectClass=organizationalUnit)(objectClass=group))(|(cn=" + searchUser + ")(dn=" + searchUser + ")(sAMAccountName=" + searchUser + ")))");
                        // ("(&(objectClass=organizationalUnit)(OU=電力技術部))");
                        SearchResult searchResult = mySearcher.FindOne();
                        if (searchResult != null)
                        {
                            isExite = true;//該域用戶 存在。。。
                            string path = searchResult.Path;
                            DataContextProvider.loger.Info(string.Format("獲取當前登錄域賬號的OUPath>>>>>>>>>>>>>>>>>>>>>>>>>>>{0}", path));

                            string[] splits = path.Split(new char[] { ',' });
                            for (int i = splits.Count() - 1; i >= 0; i--)
                            {
                                if (splits[i].Contains("OU="))
                                {
                                    if (directorys==null)
                                    {
                                        directorys = new List<string>();
                                    }
                                    directorys.Add(splits[i].Substring(splits[i].IndexOf('=') + 1));
                                }
                            }
                            string xing = (string)(searchResult.Properties["sn"].Count>0?searchResult.Properties["sn"][0]:"");
                            string ming = (string)(searchResult.Properties["givenname"].Count>0?searchResult.Properties["givenname"][0]:"");
                            name = (xing + ming);
                            DataContextProvider.loger.Info(string.Format("獲取當前登錄域賬號的姓名>>>>>>>屬性>>>>>name>>>>>>>>>>>>>>>{0}", name));
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                DataContextProvider.loger.Error(" 獲取AD用戶姓名和所在OU目錄 發生異常::  " + ex.ToString());
            }
            //finally
            //{
            //    //釋放資源
            //    entry.Close();
            //    entry.Dispose();
            //}
            paths = directorys;
            userName = name;

            return isExite;
        }

        #endregion

 

參考:

http://www.cnblogs.com/jamsewang/archive/2011/11/03/2234555.html

http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C

http://82831221.blog.163.com/blog/static/4716957820118162045169/

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM