Windows通过“强制密码历史”策略直接拦截重复使用旧密码,本地用gpedit.msc配置(家庭版不支持),域环境通过GPO统一管理,并需配套设置密码最短/最长使用期限以防止绕过。
windows 系统通过“强制密码历史”策略直接阻止用户重复使用旧密码,这不是提醒或建议,而是系统级拦截——改密码时若新密码已在历史记录中,操作会立即失败。
本地计算机:用本地组策略编辑器配置
适用于 Windows 10/11 专业版、企业版或服务器系统(家庭版不支持 gpedit.msc):
- 按 Win + R,输入
gpedit.msc,回车打开本地组策略编辑器 - 依次展开:计算机配置 → Windows 设置 → 安全设置 → 帐户策略 → 密码策略
- 双击右侧的 强制密码历史
- 勾选“已启用”,在“记住密码数量”中填入数字(推荐设为 24)
- 点击“确定”保存,无需重启,策略即时生效
域环境:通过组策略对象(GPO)统一管理
在 Active Directory 域中,应将策略部署到“默认域策略”或新建 GPO 并链接到对应 OU:
- 在域控制器上打开 组策略管理控制台(GPMC)
- 编辑目标 GPO,导航至:计算机配置 → 策略 → Windows 设置 → 安全设置 → 帐户策略 → 密码策略
- 配置 强制密码历史 为 24
- 同步设置两项关键配套策略,防止绕过:
- 密码最短使用期限:设为 1 天或以上(如设为 0,用户可秒改多次来刷掉历史记录)
- 密码最长使用期限:建议设为 90 天,推动定期更新
验证与注意事项
策略生效后,用户修改密码时系统自动比对 AD 或本地 SAM 中存储的历史哈希值(Windows 不明文保存旧密码,而是存 salted hash):
- 若用 PowerShell 批量检查域策略,可运行:
Get-ADDefaultDomainPasswordPolicy | Select-Object PasswordHistoryCount, MinPasswordAge, MaxPasswordAge - 历史密码仅对启用了“密码必须符合复杂性要求”的账户完整生效;若该选项被禁用,部分简单密码可能因哈希碰撞被误判,但不影响历史记录机制本身
- 本地管理员账户同样受此策略约束,前提是它属于应用该 GPO 或本地策略的范围
替代方案:命令行快速部署(域环境)
适合批量配置或自动化运维:
- PowerShell 命令一键设置:
Set-ADDefaultDomainPasswordPolicy -PasswordHistoryCount 24 -MinPasswordAge 1.00:00:00 -MaxPasswordAge 90.00:00:00 - 执行后所有新密码修改均立即遵循该规则,已有用户下次改密即生效

















