public bool DeleteUserByLogin(ADUserDetail userDelete, ref string err) { err = ""; try { DirectoryEntry de = GetRoot(); de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userDelete.LoginName + "))"; SearchResult results = directorySearch.FindOne(); if (results == null) { //err = MethodBase.GetCurrentMethod() + ", user account " + userDelete.LoginName + " does not exist in AD."; return(true); } DirectoryEntry user = new DirectoryEntry(results.Path, LDAPUser, LDAPPassword); de.Children.Remove(user); de.CommitChanges(); } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + " Exception, " + ex.Message; Trace.TraceError(err); //throw ex; return(false); } return(true); }
public bool AddUserByLogin(ADUserDetail userAdd, bool fromUpdate, ref string err) { err = ""; DirectoryEntry de = null; try { de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userAdd.LoginName + "))"; SearchResult results = directorySearch.FindOne(); if (results != null) { err = MethodBase.GetCurrentMethod() + ", user account " + userAdd.LoginName + " already exists in AD."; if (fromUpdate) { return(false); } return(UpdateUserByLogin(results.Path, userAdd, ref err)); } return(AddUserByLogin(userAdd, ref err)); } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception:" + ex.Message; return(false); } }
internal ADUserDetail GetUserByFullName(String userName) { try { DirectoryEntry de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=user)(cn=" + userName + "))"; SearchResult results = directorySearch.FindOne(); if (results == null) { return(null); } DirectoryEntry user = new DirectoryEntry(results.Path, LDAPUser, LDAPPassword); return(ADUserDetail.GetUser(user)); } catch (Exception ex) { Trace.TraceError(ex.Message); string err = ex.Message; int Event_id = 1118; EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); ADUserDetail ADuser = null; return(ADuser); } }
public bool DisableUserByLogin(ADUserDetail userDisable, ref string err) { err = ""; try { DirectoryEntry de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + userDisable.LoginName + "))"; SearchResult results = directorySearch.FindOne(); if (results == null) { return(false); } DirectoryEntry user = new DirectoryEntry(results.Path, LDAPUser, LDAPPassword); int val = (int)user.Properties["userAccountControl"].Value; user.Properties["userAccountControl"].Value = val | 0x2; user.CommitChanges(); } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception:" + ex.Message; Trace.TraceError(err); return(false); } return(true); }
public bool AddUserByLogin(ADUserDetail userAdd, ref string err) { err = ""; DirectoryEntry de = null; DirectoryEntry user = null; DirectoryEntry deuser = null; try { de = GetRoot(); user = de.Children.Add("CN=" + userAdd.LoginName, "user"); using (user) { //sAMAccountName is required for W2k AD, we would not use //this for ADAM, however. user.Properties[ADProperties.LOGINNAME].Value = userAdd.LoginName; user.Properties[ADProperties.FIRSTNAME].Value = userAdd.FirstName; user.Properties[ADProperties.LASTNAME].Value = userAdd.LastName; if (userAdd.EmailAddress != String.Empty) { user.Properties[ADProperties.EMAILADDRESS].Value = userAdd.EmailAddress; } user.Properties[ADProperties.DISPLAYNAME].Value = userAdd.FirstName + " " + userAdd.LastName; //user.Properties["FullName"].Value = userAdd.FirstName + " " + userAdd.LastName; //userPrincipalName is not required, but recommended //for ADAM. AD also contains this, so we can use it. //user.Properties[ADProperties.USERPRINCIPALNAME].Value = userAdd.LoginName; user.CommitChanges(); } UpdateUserByLogin(userAdd, true, ref err); return(true); } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception: " + ex.Message; return(false); } finally { if (user != null) { user.Close(); } if (deuser != null) { deuser.Close(); } de = null; user = null; deuser = null; } }
public bool UpdateUserByLogin(string path, ADUserDetail userUpdate, ref string err) { DirectoryEntry user = null; try { err = ""; user = new DirectoryEntry(path, LDAPUser, LDAPPassword); user.Properties[ADProperties.FIRSTNAME].Value = userUpdate.FirstName; user.Properties[ADProperties.LASTNAME].Value = userUpdate.LastName; if (userUpdate.EmailAddress != String.Empty) { user.Properties[ADProperties.EMAILADDRESS].Value = userUpdate.EmailAddress; } if ((userUpdate.Password != null) && (userUpdate.Password != "")) { user.Invoke("SetPassword", userUpdate.Password); } user.CommitChanges(); if (userUpdate.AccountDisabled) { DisableUserByLogin(userUpdate, ref err); } else { EnableUserByLogin(userUpdate, ref err); } } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception:" + ex.Message; Trace.TraceError(err); return(false); } finally { if (user != null) { user.Close(); } user = null; } return(true); }
public bool AddUserToGroup(ADUserDetail user, string groupName, ref string err) { err = ""; try { ADManager admanager = new ADManager(LDAPPath, LDAPUser, LDAPPassword); if (admanager.AddUserToGroup(user.LoginName, groupName) == false) { return(false); } return(UpdateUserByLogin(user, false, ref err)); } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception:" + ex.Message; Trace.TraceError(err); return(false); } }
/// <summary> /// This function will take a DL or Group name and return list of users /// </summary> /// <param name="groupName"></param> /// <returns></returns> public List <ADUserDetail> GetUsers() { List <ADUserDetail> userlist = new List <ADUserDetail>(); DirectoryEntry user = null; try { DirectoryEntry de = GetRoot(); DirectorySearcher ds = new DirectorySearcher(de); ds.Filter = "(objectCategory=user)"; SearchResultCollection res = ds.FindAll(); if (res != null) { foreach (SearchResult r in res) { user = r.GetDirectoryEntry(); ADUserDetail userobj = ADUserDetail.GetUser(user); userlist.Add(userobj); user.Close(); } } return(userlist); } catch (Exception ex) { Trace.TraceError(ex.Message); string err = "GetUser from AD user server, error: " + ex.Message; //int Event_id = 1120; //EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); return(userlist); } finally { if (user != null) { user.Close(); } } }
public List <ADUserDetail> GetUserFromGroup(String groupName) { List <ADUserDetail> userlist = new List <ADUserDetail>(); try { DirectoryEntry de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" + groupName + "))"; SearchResult results = directorySearch.FindOne(); if (results != null) { DirectoryEntry deGroup = new DirectoryEntry(results.Path, LDAPUser, LDAPPassword); System.DirectoryServices.PropertyCollection pColl = deGroup.Properties; int count = pColl["member"].Count; for (int i = 0; i < count; i++) { string respath = results.Path; string[] pathnavigate = respath.Split("CN".ToCharArray()); respath = pathnavigate[0]; string objpath = pColl["member"][i].ToString(); string path = respath + objpath; DirectoryEntry user = new DirectoryEntry(path, LDAPUser, LDAPPassword); ADUserDetail userobj = ADUserDetail.GetUser(user); userlist.Add(userobj); user.Close(); } } return(userlist); } catch (Exception ex) { Trace.TraceError(ex.Message); string err = ex.Message; int Event_id = 1122; EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); return(userlist); } }
public List <ADUserDetail> GetUsersByFirstName(string fName) { //UserProfile user; List <ADUserDetail> userlist = new List <ADUserDetail>(); string filter = ""; m_DirectoryEntry = null; DirectoryEntry de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Asynchronous = true; directorySearch.CacheResults = true; filter = string.Format("(givenName={0}*", fName); // filter = "(&(objectClass=user)(objectCategory=person)(givenName="+fName+ "*))"; directorySearch.Filter = filter; SearchResultCollection userCollection = directorySearch.FindAll(); foreach (SearchResult users in userCollection) { DirectoryEntry userEntry = new DirectoryEntry(users.Path, LDAPUser, LDAPPassword); ADUserDetail userInfo = ADUserDetail.GetUser(userEntry); userlist.Add(userInfo); } directorySearch.Filter = "(&(objectClass=group)(SAMAccountName=" + fName + "*))"; SearchResultCollection results = directorySearch.FindAll(); if (results != null) { foreach (SearchResult r in results) { DirectoryEntry deGroup = new DirectoryEntry(r.Path, LDAPUser, LDAPPassword); ADUserDetail agroup = ADUserDetail.GetUser(deGroup); userlist.Add(agroup); } } return(userlist); }
public bool ChangeUserPassword(ADUserDetail u, ref string err) { err = MethodBase.GetCurrentMethod().ToString(); if (u == null) { err += "ADUserDetail is empty."; return(false); } if (u.LoginName == "") { err += " Invalid username (empty)."; } if (u.Password == "") { err += " Invalid password (empty)."; } if ((u.LoginName == String.Empty) || (u.Password == String.Empty)) { return(false); } try { DirectoryEntry de = GetRoot(); DirectorySearcher directorySearch = new DirectorySearcher(de); directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + u.LoginName + "))"; SearchResult results = directorySearch.FindOne(); if (results == null) { return(AddUserByLogin(u, ref err)); } DirectoryEntry user = new DirectoryEntry(results.Path, LDAPUser, LDAPPassword); user.Invoke("SetPassword", u.Password); user.CommitChanges(); user.Close(); } catch (System.Runtime.InteropServices.COMException ce) { if (String.Format("0:X", ce.ErrorCode) == "80072035") { err = "Failed to change password due to a password policy issue"; int Event_id = 1123; EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); } else { err = ce.InnerException.Message; int Event_id = 1123; EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); } } catch (Exception ex) { err = MethodBase.GetCurrentMethod() + ", Exception: " + ex.Message; if (null != ex.InnerException) { err += ", " + ex.InnerException.Message; } int Event_id = 1125; EventLog.WriteEntry(InfoHubEventLog.LogSource, err, EventLogEntryType.Warning, Event_id, Category); Trace.TraceError(err); return(false); } return(true); }