必须通过组策略启用“密码必须符合复杂性要求”并同步配置最小长度12位、最长使用期限90天、最短使用期限1天、强制密码历史24次及账户锁定阈值5次,才能强制用户设置含大小写字母、数字和特殊字符的密码。

要在Windows系统中强制用户设置包含大小写字母、数字和特殊字符的密码,必须通过组策略或本地安全策略启用密码复杂性校验机制,否则系统默认允许纯数字或重复字符等弱密码。
本地计算机启用密码复杂性要求
适用于未加入域的Windows专业版、企业版或教育版设备,配置后立即写入本机安全数据库,无需重启即可对后续改密生效。
按下 Win + R,输入 gpedit.msc,回车打开本地组策略编辑器。
在左侧导航栏依次展开:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略。
双击右侧的密码必须符合复杂性要求,勾选【已启用】→ 确定。这一步是核心,不启用则所有其他长度或期限设置都失去“强制复杂”的意义。
注意:若系统提示“此设置由更高优先级的组策略对象定义”,说明该设备已加入域且策略被域控制器接管——此时本地编辑器中该项目会变灰,不可修改,必须转去域控制器操作。
域环境中强制执行复杂密码(必须在域控制器上操作)
这是唯一对所有域用户生效的方式,任何在普通成员机、OU级GPO或用户配置路径下的操作均无效。
方法一:使用组策略管理控制台(推荐)
在域控制器上,按 Win + R 输入 gpmc.msc 回车,打开组策略管理。
展开你的域名节点(如 contoso.com)→ 展开「组策略对象」→ 右键默认域策略 → 选择「编辑」。
导航至:计算机配置 → 策略 → Windows 设置 → 安全设置 → 账户策略 → 密码策略。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
双击密码必须符合复杂性要求 → 勾选【已启用】→ 确定。这一步必须在「计算机配置」下完成,绝对不能在「用户配置」里找,否则策略不会应用。
方法二:验证策略是否真正落地
执行命令 gpupdate /force 强制刷新策略;新建一个测试域用户,在登录界面或按 Ctrl+Alt+Del → 更改密码 时尝试输入 123456 或 password,观察是否被系统明确拒绝并提示“密码不符合复杂性要求”。
若仍能设成弱密码,大概率是绕过了校验:比如用 PowerShell 的 Set-ADAccountPassword 直接重置、或脚本调用 LDAP 的 unicodePwd 属性写入——这类操作跳过 Windows 密码筛选器(pwdfilt.dll),不触发复杂性检查。
配套关键参数必须同步设置
仅启用复杂性要求远远不够,必须组合设置以下五项才能形成有效防护链:
① 双击最小密码长度,设为 12(启用复杂性后系统最低允许8位,但12位更稳妥);
② 双击密码最长使用期限,输入 90(单位:天),防止密码长期不更新;
③ 双击密码最短使用期限,设为 1(单位:天),否则用户可在改密后立刻再改一次,绕过历史记录限制;
④ 双击强制密码历史,设为 24,确保用户无法重复使用最近24次旧密码;
⑤ 返回左侧导航树,进入账户策略 → 账户锁定策略,将账户锁定阈值设为 5 次失败尝试,防止暴力穷举弱密码。










