首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取系统最小密码长度和复杂度

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

Stack Overflow用户
提问于 2011-11-29 20:12:32
回答 1查看 3.8K关注 0票数 6

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

我正在寻找类似这样的东西:

代码语言:javascript
复制
Function DetectSystemMinPassLength:integer;
begin
//?
end;

Function DetectSystemPassComplexity:boolean;
begin
//?
end;

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

例如:

代码语言:javascript
复制
Function MyCheckPassComplexity (Password:string):boolean;
begin
// ???
end;

使用

代码语言:javascript
复制
MyCheckPassComplexity (' 12345 '); //result False

MyCheckPassComplexity (' MyCoolPassword9999 '); //result True
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-29 21:43:13

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

代码语言:javascript
复制
Password Policy security settings are not registry keys.

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

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

代码语言:javascript
复制
secedit.exe /export /cfg C:\Output\Policy.Ini

此命令将创建一个文件,如下所示

代码语言:javascript
复制
[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 42
MinimumPasswordLength = 0
PasswordComplexity = 0
PasswordHistorySize = 0

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8310485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档