zoukankan      html  css  js  c++  java
  • 根据当前登录域账号 获取AD用户姓名和所在OU目录

    根据当前登录域账号 获取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
    复制代码
  • 相关阅读:
    bzoj1297: [SCOI2009]迷路
    bzoj1875: [SDOI2009]HH去散步
    bzoj2466: [中山市选2009]树
    bzoj1770: [Usaco2009 Nov]lights 燈
    BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
    BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
    BZOJ 1006: [HNOI2008]神奇的国度( MCS )
    BZOJ 1925: [Sdoi2010]地精部落( dp )
    BestCoder Round #57 (div.2)
    BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
  • 原文地址:https://www.cnblogs.com/ningang/p/4321683.html
Copyright © 2011-2022 走看看