在本地安全策略(PC-Control面板 - 管理 - 本地安全策略)中,有一个参数"密码的最小长度"和参数"密码必须满足复杂性要求"(true/false).如何在Delphi中读取它们(适用于WinXpSp3-Win2003-Vista-Win7-Win2008(+ r2))?
我正在寻找类似的东西:
Function DetectSystemMinPassLength:integer;
begin
//?
end;
Function DetectSystemPassComplexity:boolean;
begin
//?
end;
Run Code Online (Sandbox Code Playgroud)
附加问题:Delphi(或WinApi)函数中是否存在可以检查给定密码是否符合系统策略(或设置)的函数?
例如:
Function MyCheckPassComplexity (Password:string):boolean;
begin
// ???
end;
Run Code Online (Sandbox Code Playgroud)
使用
MyCheckPassComplexity (' 12345 '); //result False
MyCheckPassComplexity (' MyCoolPassword9999 '); //result True
Run Code Online (Sandbox Code Playgroud)
通常要读取本地或组策略设置,您必须使用Group Policy Settings Reference for Windows and Windows Server
基本上是一组excel文件,其中包含存储此类信息的Windows注册表项.不幸的是,在这种情况下,如果您检查这些帐户策略(强制密码历史记录,最长密码年龄,最短密码年龄,最小密码长度)的参考,您将找到以下消息:
Password Policy security settings are not registry keys.
Run Code Online (Sandbox Code Playgroud)
在root\RSOP\Computer
命名空间中存在一组WMI类,如RSOP_SecuritySettingBoolean,RSOP_SecuritySettingNumeric, RSOP_SecuritySettings以访问帐户策略,但这些类仅适用于域中的系统,但它在工作组中不起作用.
目前我认为您最好的选择是使用此命令将本地策略导出到ini文件(然后使用TIniFile类解析结果)
secedit.exe /export /cfg C:\Output\Policy.Ini
Run Code Online (Sandbox Code Playgroud)
此命令将创建一个这样的文件
[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 42
MinimumPasswordLength = 0
PasswordComplexity = 0
PasswordHistorySize = 0
Run Code Online (Sandbox Code Playgroud)
关于验证密码的第二个问题,您可以使用NetValidatePasswordPolicy
WinAPI函数.
归档时间: |
|
查看次数: |
3226 次 |
最近记录: |