gpt4 book ai didi

delphi - 获取系统最小密码长度和复杂度

转载 作者:行者123 更新时间:2023-12-03 15:00:39 32 4
gpt4 key购买 nike

在本地安全策略(PC-控制面板-管理-本地安全策略)中有一个参数“密码的最小长度”和一个参数“密码必须满足复杂性要求”(true/false)。如何在 Delphi 中读取它们(适用于 WinXpSp3-Win2003-Vista-Win7-Win2008(+r2))?

enter image description here

我正在寻找类似的东西:

Function DetectSystemMinPassLength:integer;
begin
//?
end;

Function DetectSystemPassComplexity:boolean;
begin
//?
end;

附加问题:Delphi(或WinApi)中是否存在可以检查给定密码是否符合系统策略(或设置)的函数?

例如:

Function MyCheckPassComplexity (Password:string):boolean;
begin
// ???
end;

使用

MyCheckPassComplexity (' 12345 '); //result False

MyCheckPassComplexity (' MyCoolPassword9999 '); //result True

最佳答案

通常要读取本地或组策略设置,您必须使用 Group Policy Settings Reference for Windows and Windows Server它基本上是一组 Excel 文件,其中包含存储此类信息的 Windows 注册表项。不幸的是,在这种情况下,如果您检查这些帐户策略的此类引用(强制密码历史记录,密码最长期限、密码最短期限、密码最短长度)您将看到此消息:

Password Policy security settings are not registry keys.

root\RSOP\Computer 命名空间中存在一组 WMI 类,如 RSOP_SecuritySettingBoolean , RSOP_SecuritySettingNumeric , RSOP_SecuritySettings访问帐户策略,但这些类仅在域中的系统上起作用(我的意思是检索信息),但在工作组中不起作用。

目前我认为最好的选择是使用此命令将本地策略导出到 ini 文件(然后使用 TIniFile 类解析结果)

secedit.exe /export /cfg C:\Output\Policy.Ini

这个命令将创建一个像这样的文件

[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 42
MinimumPasswordLength = 0
PasswordComplexity = 0
PasswordHistorySize = 0

关于验证密码的第二个问题,您可以使用 NetValidatePasswordPolicy WinAPI函数。

关于delphi - 获取系统最小密码长度和复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310485/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com