示例#1
0
        /// <summary>
        /// 更改组织单位名称。
        /// </summary>
        /// <param name="newName">该项的新名称。</param>
        /// <param name="userName">用户身份标识--用户名。为空时使用默认用户身份标识。</param>
        /// <param name="password">用户身份标识--密码。</param>
        public void Rename(string newName, string userName, string password)
        {
            DirectoryEntry de = null;

            string rdn = Utils.GenerateRDNOU(newName);

            if (ADManager.Exists(Utils.GenerateDN(rdn, Utils.GetParentDN(this.Dn))))
            {
                throw new SameRDNException("已存在同名对象。");
            }

            try
            {
                de = ADManager.GetByDN(this.Dn, userName, password);        // 必须是DN形式,且完全转义。

                de.Rename(rdn);

                de.CommitChanges();

                // Reload
                this.Parse(de);
            }
            catch (DirectoryServicesCOMException dsce)
            {
                throw dsce;
            }
            finally
            {
                if (de != null)
                {
                    de.Close();
                    de.Dispose();
                }
            }
        }
示例#2
0
        /// <summary>
        /// 获取组对象的成员。
        /// </summary>
        /// <param name="userName">用户身份标识--用户名。为空时使用默认用户身份标识。</param>
        /// <param name="password">用户身份标识--密码。</param>
        /// <returns></returns>
        public List <DirectoryEntry> GetMembers(string userName, string password)
        {
            List <DirectoryEntry> entries = new List <DirectoryEntry>();

            DirectoryEntry de = null;

            try
            {
                foreach (string member in this.members)
                {
                    de = ADManager.GetByDN(member, userName, password);

                    if (de != null)
                    {
                        entries.Add(de);
                    }
                }

                return(entries);
            }
            catch (DirectoryServicesCOMException dsce)
            {
                foreach (DirectoryEntry d in entries)
                {
                    if (d != null)
                    {
                        d.Close();
                        d.Dispose();
                    }
                }

                throw dsce;
            }
        }
示例#3
0
        /// <summary>
        /// 移动OU到指定位置。
        /// </summary>
        /// <param name="newLocationPath">移动到的位置的ADsPath。必须是DN形式,且完全转义。</param>
        /// <param name="mustOU">移动到的位置对应的DirectoryEntry是否必须是组织单位。</param>
        /// <param name="userName">用户身份标识--用户名。为空时使用默认用户身份标识。</param>
        /// <param name="password">用户身份标识--密码。</param>
        public void Move(string newLocationPath, bool mustOU, string userName, string password)
        {
            DirectoryEntry de = ADManager.GetByDN(this.Dn, userName, password);         // 必须DN -- 见ADManager.MoveOU方法

            ADManager.MoveOU(de, newLocationPath, mustOU, userName, password);

            this.Parse(de);

            de.Close();
            de.Dispose();
        }
示例#4
0
        ///<summary>
        ///移动DirectoryEntry到指定位置。
        ///</summary>
        ///<param name="newLocationPath">移动到的位置的ADsPath</param>
        ///<param name="userName">用户身份标识--用户名。为空时使用默认用户身份标识。</param>
        ///<param name="password">用户身份标识--密码。</param>
        public virtual void Move(string newLocationPath, string userName, string password)
        {
            DirectoryEntry de = ADManager.GetByDN(this.dn, userName, password);     // 必须用DN -- 见ADManager.Move方法说明

            ADManager.Move(de, newLocationPath, userName, password);

            this.Parse(de);

            de.Close();
            de.Dispose();
        }
示例#5
0
        /// <summary>
        /// 获取组对象的成员。(仅用户)
        /// </summary>
        /// <param name="userName">用户身份标识--用户名。为空时使用默认用户身份标识。</param>
        /// <param name="password">用户身份标识--密码。</param>
        /// <returns></returns>
        public List <User> GetUserMembers(string userName, string password)
        {
            List <User> users = new List <User>();

            DirectoryEntry de = null;
            string         userSchemaClassName = SchemaClass.user.ToString("F");

            try
            {
                foreach (string member in this.members)
                {
                    de = ADManager.GetByDN(member, userName, password);

                    if (de != null)
                    {
                        if (de.SchemaClassName == userSchemaClassName)
                        {
                            users.Add(new User(de));
                        }

                        de.Close();
                        de.Dispose();
                    }
                }

                return(users);
            }
            catch (DirectoryServicesCOMException dsce)
            {
                throw dsce;
            }
            finally
            {
                if (de != null)
                {
                    de.Close();
                    de.Dispose();
                }
            }
        }