Как получить значение параметра локальной политики безопасности: Пароль должен отвечать требованиям сложности - C#
Формулировка задачи:
Здравствуйте.
Никак не могу найти подходящий способ получить значение параметра локальной политики безопасности (Политика учётных записей -> Политика паролей): "Пароль должен отвечать требованиям сложности" (Включен или Выключен).
Для пк которые в домене - нашёл способ получения через: WMI RSOP_SecuritySettingBoolean class.
Для пк которые не в домене - он не срабатывает у меня.
Также встречал способ через парсинг вывода утилиты secedit.exe: secedit /export /cfg c:\local.cfg. Но это какой-то костыль, он заметно усложняет мне проект (это крайний вариант). Может быть есть другие способы, через стандартные классы, например: DirectoryEntry или PrincipalContext.
Вообще, мне нужно два значения параметра локальной политики безопасности:
1) Минимальная длина пароля.
2) Пароль должен отвечать требованиям сложности.
Первое значение я получаю методом парсинга вывода команды net account, а вот второе значение никак не могу получить.
При этом создаётся файл (seceditOut.txt) с содержанием:
Считываю нужные значения и удаляю файл.
Пока остановился на этом решении...
С Уважением, Павел.
Итак, суть моего обращения:
Может быть кто-нибудь подскажет, как в C# получить значение локальной политики безопасности (Политика учётных записей -> Политика паролей): "Пароль должен отвечать требованиям сложности" (Включен или Выключен) для ПК, который не в домене ???
С Уважением, Павел...
Пока что решил свою задачу методом, предложенным здесь:
http://stackoverflow.com/questions/1...ctory-settings.
string tempFileSeceditOut = AppDomain.CurrentDomain.BaseDirectory + "seceditOut.txt"; // temp file // secedit.exe Process secedit = new Process(); secedit.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\secedit.exe"); secedit.StartInfo.Arguments = String.Format(@"/export /cfg ""{0}"" /quiet", tempFileSeceditOut); secedit.StartInfo.UseShellExecute = false; secedit.StartInfo.CreateNoWindow = true; secedit.Start(); secedit.WaitForExit(); // Read first 8 lines of temp file StreamReader readFile = new StreamReader(tempFileSeceditOut); List<string> fileReadLines = new List<string>(); for(int i=0; i<8; i++) fileReadLines.Add(readFile.ReadLine()); readFile.Close(); File.Delete(tempFileSeceditOut); string MinimumPasswordLength = fileReadLines[5].Split('=')[1].Trim(); string PasswordComplexity = fileReadLines[6].Split('=')[1].Trim();
[Unicode] Unicode=yes [System Access] MinimumPasswordAge = 0 MaximumPasswordAge = 42 MinimumPasswordLength = 13 PasswordComplexity = 1 PasswordHistorySize = 0 LockoutBadCount = 0 RequireLogonToChangePassword = 0 ForceLogoffWhenHourExpire = 0 NewAdministratorName = "Administrator" NewGuestName = "Guest" ClearTextPassword = 0 LSAAnonymousNameLookup = 0 EnableAdminAccount = 1 EnableGuestAccount = 0 [Event Audit] AuditSystemEvents = 0 AuditLogonEvents = 0 AuditObjectAccess = 0 AuditPrivilegeUse = 0 AuditPolicyChange = 0 AuditAccountManage = 0 AuditProcessTracking = 0 AuditDSAccess = 0 AuditAccountLogon = 0 ...............................................
Решение задачи: «Как получить значение параметра локальной политики безопасности: Пароль должен отвечать требованиям сложности»
textual
Листинг программы
string tempFileSeceditOut = Path.GetTempFileName();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д