} // End Function AddImpersonatedToGroup /// <summary> /// Adds the supplied user into the (local) group /// </summary> /// <param name="userName">the full username (including domain)</param> /// <param name="groupName">the name of the group</param> /// <returns>true on success; /// false if the group does not exist, or if the user is already in the group, or if the user cannont be added to the group</returns> public static bool AddUserToLocalGroup(string userName, string groupName) { System.DirectoryServices.DirectoryEntry userGroup = null; try { string groupPath = string.Format(System.Globalization.CultureInfo.CurrentUICulture , "WinNT://{0}/{1},group", System.Environment.MachineName, groupName ); userGroup = new System.DirectoryServices.DirectoryEntry(groupPath); if ((null == userGroup) || (true == string.IsNullOrEmpty(userGroup.SchemaClassName)) || (0 != string.Compare(userGroup.SchemaClassName, "group", true , System.Globalization.CultureInfo.CurrentUICulture))) { return(false); } string userPath = string.Format(System.Globalization.CultureInfo.CurrentUICulture , "WinNT://{0},user", userName ); userGroup.Invoke("Add", new object[] { userPath }); userGroup.CommitChanges(); return(true); } catch (System.Exception ex) { System.Console.WriteLine(ex.Message); return(false); } finally { if (null != userGroup) { userGroup.Dispose(); } } } // End Function AddUserToLocalGroup
public bool GetADInformation() { string strUserId = "", strFilter = ""; if(!SAMAccountName.Equals( "" )) { strUserId = SAMAccountName; if(strUserId.Contains( @"\" )) strUserId = strUserId.Substring( 5 ); // only EmCare/EMSC users strFilter = string.Format( "(|(&(objectClass=User)(sAMAccountName={0})(|(company=EmCare*)(company=EMSC*))))", strUserId ); } if(!LastName.Equals( "" )) // only EmCare/EMSC users strFilter = string.Format( "(|(&(objectClass=User)(givenname={0})(sn={1})(|(company=EmCare*)(company=EMSC*))))", FirstName, LastName ); string strServer = System.Configuration.ConfigurationManager.AppSettings["EMSC"].ToString(); string strADUser = System.Configuration.ConfigurationManager.AppSettings["LDAPUID"].ToString(); string strADPwd = System.Configuration.ConfigurationManager.AppSettings["LDAPPwd"].ToString(); string sLDAPPath = string.Format("LDAP://{0}/DC=EMSC,DC=root01,DC=org", strServer); System.DirectoryServices.DirectoryEntry objDE = null; System.DirectoryServices.DirectorySearcher objDS = null; try { objDE = new System.DirectoryServices.DirectoryEntry( sLDAPPath, strADUser, strADPwd, System.DirectoryServices.AuthenticationTypes.Secure ); objDS = new System.DirectoryServices.DirectorySearcher( objDE ); // get the LDAP filter string based on selections objDS.Filter = strFilter; objDS.ReferralChasing = System.DirectoryServices.ReferralChasingOption.None; //String strResult = String.Format( //"(&(objectClass={0})(givenname={1})(sn={2}))", //sLDAPUserObjectClass, sFirstNameSearchFilter, sLastNameSearchFilter); //string sFilter = //String.Format("(&(objectclass=user)(MemberOf=CN={0},OU=Groups,DC={1},DC=root01,DC=org))", // strGroupName, strDomain); objDS.PropertiesToLoad.Add( "userAccountControl" ); objDS.PropertiesToLoad.Add( "SAMAccountName" ); objDS.PropertiesToLoad.Add( "givenName" ); objDS.PropertiesToLoad.Add( "sn" ); objDS.PropertiesToLoad.Add( "TelephoneNumber" ); objDS.PropertiesToLoad.Add( "mail" ); objDS.PropertiesToLoad.Add( "title" ); objDS.PropertiesToLoad.Add( "department" ); objDS.PropertiesToLoad.Add( "company" ); objDS.PropertiesToLoad.Add( "physicalDeliveryOfficeName" ); objDS.PropertiesToLoad.Add( "displayName" ); //start searching System.DirectoryServices.SearchResultCollection objSRC = objDS.FindAll(); try { if( objSRC.Count != 0 ) { //if(objSRC.Count > 1) // Found = Found; // grab the first search result System.DirectoryServices.SearchResult objSR = objSRC[ 0 ]; Found = true; displayName = objSR.Properties[ "displayName" ][ 0 ].ToString(); givenName = objSR.Properties[ "givenName" ][ 0 ].ToString(); sn = objSR.Properties[ "sn" ][ 0 ].ToString(); SAMAccountName = objSR.Properties[ "SAMAccountName" ][ 0 ].ToString(); userAccountControl = objSR.Properties[ "userAccountControl" ][ 0 ].ToString(); int iInactiveFlag = Convert.ToInt32( userAccountControl ); iInactiveFlag = iInactiveFlag & 0x0002; Active = iInactiveFlag <= 0; if( objSR.Properties[ "TelephoneNumber" ].Count > 0 ) TelephoneNumber = objSR.Properties[ "TelephoneNumber" ][ 0 ].ToString(); if( objSR.Properties[ "mail" ].Count > 0 ) mail = objSR.Properties[ "mail" ][ 0 ].ToString(); if( objSR.Properties[ "title" ].Count > 0 ) title = objSR.Properties[ "title" ][ 0 ].ToString(); if( objSR.Properties[ "department" ].Count > 0 ) department = objSR.Properties[ "department" ][ 0 ].ToString(); if( objSR.Properties[ "company" ].Count > 0 ) company = objSR.Properties[ "company" ][ 0 ].ToString(); if( objSR.Properties[ "physicalDeliveryOfficeName" ].Count > 0 ) physicalDeliveryOfficeName = objSR.Properties[ "physicalDeliveryOfficeName" ][ 0 ].ToString(); } else { Found = false; return Found; } } catch( Exception ) { // ignore errors Found = false; return false; } finally { objDE.Dispose(); objSRC.Dispose(); //objDS.Dispose(); } } catch( Exception ) { // ignore errors Found = false; return false; } finally { objDS.Dispose(); } return Found; }