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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }
        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);
            }
        }
Ejemplo n.º 4
0
        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();
        }