我有一个用于批量创建用户的应用程序(我知道是非典型的,但不是我的决定),当前,密码验证仅使用正则表达式完成。但是具体要求可能会根据PC的设置而变化,对吗?那么,有没有一种方法可以根据C#中PC的密码策略来测试给定的字符串?我希望能够执行以下操作:
bool isPasswordGood = TestPasswordComplexity("notAgoodPassword");
最佳答案
这将取决于Windows中设置的安全策略。通常,这是使用GUI来设置安全策略来设置的,但实际上您可以从命令行中导出设置,如下所示:
secedit.exe /export /cfg C:\temp\MySecurityPolicy.inf
注意:您可能需要以管理员身份运行命令提示符,才能允许(右键单击命令提示符图标,然后选择以管理员身份运行)。那应该将您的设置保存在一个文本文件中(在这里, MySecurityPolicy.inf )。该文件的第一部分应如下所示:
[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 365
MinimumPasswordLength = 12
PasswordComplexity = 0
PasswordHistorySize = 20
LockoutBadCount = 20
ResetLockoutCount = 10
LockoutDuration = 10
RequireLogonToChangePassword = 0
ForceLogoffWhenHourExpire = 1
NewAdministratorName = "LocalAdmin"
NewGuestName = "LocalGuest"
ClearTextPassword = 0
(...)
我尤其可以想象第6行和第7行,MinimumPasswordLength
和PasswordComplexity
很有趣-有些documentation about this available here了解了它的工作原理后,您应该能够创建一个简单的脚本或程序来读取此类配置文件,并使用其中的信息来告知您的密码验证方法。也许只读第6和7行就足够了吗?
我意识到这可能不如直接从C#查找策略设置那样好,但是它至少为您提供了一个选择:现在,每当您需要检查需求时,运行一个脚本即可将设置导出到已知文件,然后从您的应用程序中对其进行重新评估。
如果您也可以从您的应用程序运行导出过程(假设提升的特权要求不会造成麻烦),那么您应该能够使所有这些自动化。否则,您可能必须手动导出策略文件,并将其存储在应用程序可读取的位置。
关于c# - 以编程方式验证Windows密码策略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62903054/