/// <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(); } } }
/// <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; } }
/// <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(); }
///<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(); }
/// <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(); } } }