//build list of users on the computer private static void CleanUpAccounts() { SelectQuery query = new SelectQuery("Win32_UserProfile"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementObject sid in searcher.Get()) { string user = new SecurityIdentifier(sid["SID"].ToString()).Translate(typeof(NTAccount)).ToString(); int pos = user.LastIndexOf("\\") + 1; string username = user.Substring(pos, user.Length - pos); if (username != "NEO" && username != "NETWORK SERVICE" && username != "LOCAL SERVICE" && username != "SYSTEM") //replace with ed_admin { NTAccount f = new NTAccount(username); SecurityIdentifier s = (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier)); String sidString = s.ToString(); RemoveUserRegistryEntry(sidString); RemoveLocalUser(username); } } }
/// <summary> /// DoImportGroup method implementation /// </summary> private void DoImportGroup(DirectoryEntry DirEntry, MFAUniqueUserList users, UsersADDSRecord Parameters, bool disableall) { string distinguishedName = string.Empty; string sidstr = string.Empty; try { distinguishedName = DirEntry.Properties["distinguishedName"].Value.ToString(); byte[] SD = (byte[])DirEntry.Properties["objectSID"].Value; string sid = new SecurityIdentifier(SD, 0).ToString(); sidstr = sid.Substring(sid.LastIndexOf("-") + 1); using (DirectoryEntry rootdir = ADDSUtils.GetDirectoryEntry(Parameters.DomainName, Parameters.UserName, Parameters.Password)) // Binding Root { string qryldap = string.Empty; string subldap = string.Empty; bool hasval1 = false; bool hasval2 = false; qryldap = "(| (&(objectCategory=group)(objectClass=group)(memberof=" + distinguishedName + ")) (&(objectCategory=user)(objectClass=user)(|(memberof=" + distinguishedName + ")(primaryGroupID=" + sidstr + "))"; if (Parameters.CreatedSince.HasValue) { subldap += "(whenCreated>=" + Parameters.CreatedSince.Value.ToString("yyyyMMddHHmmss.0Z") + ")"; hasval1 = true; } if (Parameters.ModifiedSince.HasValue) { subldap += "(whenChanged>=" + Parameters.ModifiedSince.Value.ToString("yyyyMMddHHmmss.0Z") + ")"; hasval2 = true; } if (hasval1 && hasval2) { qryldap += "(|" + subldap + ")"; } else if (hasval1 || hasval2) { qryldap += subldap; } qryldap += "))"; using (DirectorySearcher dsusr = new DirectorySearcher(rootdir, qryldap)) { AddPropertiesToLoadForSearcher(dsusr, Parameters.MailAttribute, Parameters.PhoneAttribute); dsusr.SizeLimit = 100000; // Set maxrows dsusr.PageSize = 5000; SearchResultCollection src = dsusr.FindAll(); if (src != null) { foreach (SearchResult sr in src) { using (DirectoryEntry SubDirEntry = ADDSUtils.GetDirectoryEntry(Parameters.DomainName, Parameters.UserName, Parameters.Password, sr)) { int k = IsImportUser(SubDirEntry.Properties["objectClass"].Value); switch (k) { case 1: DoImportUser(SubDirEntry, users, Parameters, disableall); break; case 2: if (!Parameters.NoRecurse) { DoImportGroup(SubDirEntry, users, Parameters, disableall); } break; default: break; } } } } } } } catch (Exception ex) { DataLog.WriteEntry("DN : " + distinguishedName + " SID : " + sidstr + " Error : " + ex.Message, System.Diagnostics.EventLogEntryType.Error, 5100); // throw new Exception(ex.Message); } }