public static Boolean addGroup(UserPasswordsDefault defaultLoginUser, string groups) { DirectoryEntry userGroup = null; string userName = defaultLoginUser.defaultLoginUser; string groupName = groups; try { string groupPath = String.Format(CultureInfo.CurrentUICulture, "WinNT://{0}/{1},group", Environment.MachineName, groupName); userGroup = new DirectoryEntry(groupPath); if ((null == userGroup) || (true == String.IsNullOrEmpty(userGroup.SchemaClassName)) || (0 != String.Compare(userGroup.SchemaClassName, "group", true, CultureInfo.CurrentUICulture))) { return(false); } String userPath = String.Format(CultureInfo.CurrentUICulture, "WinNT://{0},user", userName); userGroup.Invoke("Add", new object[] { userPath }); userGroup.CommitChanges(); return(true); } catch (Exception ex) { Console.WriteLine("Error creating account: {0}", ex.Message); LogLocal.addLocalLog(ex.Message, EventLogEntryType.Error); return(false); } }
public static Boolean addUser(string password, UserPasswordsDefault defaultLoginUser, string groups) { try { PrincipalContext context = new PrincipalContext(ContextType.Machine); UserPrincipal user = new UserPrincipal(context); user.SetPassword(password); user.DisplayName = defaultLoginUser.defaultLoginUser; user.Name = defaultLoginUser.defaultLoginUser; user.Description = defaultLoginUser.description; user.UserCannotChangePassword = true; user.PasswordNeverExpires = true; user.Enabled = true; user.Save(); GetSetPcUserAttributes.addGroup(defaultLoginUser, groups); return(true); } catch (Exception ex) { Console.WriteLine("Error creating account: {0}", ex.Message); LogLocal.addLocalLog(ex.Message, EventLogEntryType.Error); return(false); } }
/// <summary> /// сохранить пароль в базе нового пользователя /// </summary> /// <param name="defaultLoginUser"></param> /// <param name="newPassword"></param> /// <param name="getLocalIPAddress"></param> /// <param name="_namePc"></param> /// <returns></returns> public bool AddPasswordsUser(UserPasswordsDefault defaultLoginUser, string newPassword) { try { using (UserContext db = new UserContext()) { db.Users.Add(new User { ipPC = _ip, namePc = _namePc, password = newPassword, passwordСomplexity = 1, loginUser = defaultLoginUser.defaultLoginUser, stampDateTimeLoadPc = DateTime.Now, passwordLength = defaultLoginUser.passwordLength, passwordLifeTime = defaultLoginUser.passwordLifeTime, status = false, description = defaultLoginUser.description }); db.SaveChanges(); return(true); } } catch (Exception ex) { Console.WriteLine(ex); LogLocal.addLocalLog(ex.Message, EventLogEntryType.Error); return(false); } }
/// <summary> /// установить статус в БД что все БД = локально /// </summary> /// <param name="namePC"></param> /// <param name="password"></param> /// <returns></returns> public Boolean setStatus(Boolean status) { try { using (UserContext db = new UserContext()) { var conn = db.Users.Where(c => c.namePc == _namePc).AsEnumerable().Last(); if (conn == null) { return(false); } else { conn.status = status; db.Entry(conn).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(true); } } } catch (Exception ex) { LogLocal.addLocalLog(ex.Message, EventLogEntryType.Error); return(false); } }
public static Boolean setUserPassword(string user, string password) { try { DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName); DirectoryEntry _user = localMachine.Children.Find(user, "user"); _user.Password = password; _user.CommitChanges(); return(true); } catch (Exception ex) { Console.WriteLine("Error creating account: {0}", ex.Message); LogLocal.addLocalLog(ex.Message, EventLogEntryType.Error); return(false); } }
static void Main(string[] args) { LocalDb newUser = new LocalDb(); User user = newUser.GetParametrUser(); DateTime nowTime = DateTime.Now; DateTime oldDate = new DateTime(2016, 9, 10); UserPasswordsDefault userDefault = newUser.GetParametrDefaultUser(); if (user == null && userDefault == null) { Console.WriteLine("база не доступна выходим или не заполнен дефолтный профиль"); LogLocal.addLocalLog("база не доступна выходим или не заполнен дефолтный профиль", EventLogEntryType.Warning); return; } string newPasswordDefault = PasswordGenerator.getPassword(userDefault.passwordLength, userDefault.passwordСomplexity); string newPasswordLocal; if (user != null) { newPasswordLocal = PasswordGenerator.getPassword(user.passwordLength, user.passwordСomplexity); // пришло время менять пароль? если нет выходим TimeSpan ts = nowTime - user.stampDateTimeLoadPc; int diffTime = ts.Days; if (user.passwordLifeTime >= diffTime && GetSetPcUserAttributes.GetLocalAdmin(user.loginUser, "Администраторы")) { Console.WriteLine("Рано менять пароль выходим"); LogLocal.addLocalLog("Рано менять пароль, выходим", EventLogEntryType.Information); return; } } else { newPasswordLocal = newPasswordDefault; } //проверим локальное время, если не правильно выходим TimeSpan tsCorrect = oldDate - nowTime; int diffTimeCorrect = tsCorrect.Days; if (diffTimeCorrect > 0) { Console.WriteLine("не правильное время на пк "); LogLocal.addLocalLog("не правильное время на пк ", EventLogEntryType.Warning); return; } // если ли есть пользователь локально сменим пароль, если ли нет добавим if (user == null || !GetSetPcUserAttributes.GetLocalAdmin(userDefault.defaultLoginUser, "Администраторы")) { if (newUser.AddPasswordsUser(userDefault, newPasswordDefault) && GetSetPcUserAttributes.addUser(newPasswordDefault, userDefault, "Администраторы")) { Console.WriteLine("добавился новый пользователь, имя его и пароль в БД "); LogLocal.addLocalLog("добавился новый администратор, имя его и пароль в БД ", EventLogEntryType.Information); newUser.setStatus(true); return; } else { Console.WriteLine("не удалось добавить пользователя "); LogLocal.addLocalLog("не удалось добавить пользователя ", EventLogEntryType.Warning); newUser.setStatus(false); return; } } if (user != null && GetSetPcUserAttributes.GetLocalAdmin(user.loginUser, "Администраторы")) { if (newUser.AddPasswordsUser(userDefault, newPasswordDefault) && GetSetPcUserAttributes.setUserPassword(user.loginUser, newPasswordLocal)) { Console.WriteLine("пароль сменился на новый у локального Администратора "); newUser.setStatus(true); LogLocal.addLocalLog("пароль сменился на новый у локального администратора, сохранено в БД", EventLogEntryType.Information); return; } else { Console.WriteLine("не удалось сменить пароль или БД не доступна"); newUser.setStatus(false); LogLocal.addLocalLog("не удалось сменить пароль или БД не доступна", EventLogEntryType.Information); return; } } // Console.WriteLine("Конец "); // Console.ReadKey(); }