计算机账户会过期,其密码默认每30天由Netlogon服务自动更新以维持安全通道;过期后表现为登录异常、组策略失效、nltest报错等,需通过nltest /sc_reset或重加域修复。
计算机账户不是“用户”,但一样会过期
在域环境中,每台加入域的计算机都有一个对应的计算机账户(如 pc01$),它和用户账户一样存储在 active directory 中,也拥有密码、sid 和有效期。这个账户用于建立与域控制器的安全通信通道(secure channel)。一旦该通道失效,计算机将无法登录域、获取组策略、验证用户身份,甚至可能被踢出域——表现为反复弹出“账户已过期”或登录失败,实际却不是用户账号的问题。
默认30天自动换密,本质就是“防过期”机制
Windows 域成员默认每30天自动更新一次计算机账户密码(由 Netlogon 服务触发),这并非随意设定,而是通过周期性重置来避免账户因长期未变更而被系统判定为“陈旧”或“不可信”。关键点在于:
- 该行为由注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\MaximumPasswordAge 控制,默认值为 30(单位:天);
- 密码更新是后台静默完成的,用户无感知;
- 若该值设为 0,则禁用自动更新,计算机账户密码将长期不变,极大增加被暴力破解或重放攻击的风险;
- 域控制器本身也会检查此策略,若客户端尝试更新但策略禁止,操作会被拒绝。
过期后果比用户账户更隐蔽也更严重
用户账户过期通常体现为明确提示“账户已过期,无法登录”;而计算机账户过期往往没有直接报错,常见症状包括:
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
- 用户能输入域账号密码,但登录后桌面空白、无开始菜单、任务栏不加载;
- 组策略应用失败(gpresult /h 报“访问被拒绝”或“RPC服务器不可用”);
- 事件查看器中安全日志出现 ID 5722 或 5805 错误:“The computer XXX$ was not able to set up a secure session with a domain controller”;
- 运行 nltest /sc_query:域名 返回“NERR_CantCommunicateWithDC”或“ERROR_INVALID_PASSWORD”。
排查与修复需从计算机侧入手
解决计算机账户过期问题不能只查 AD 用户容器,必须在目标计算机本地操作:
- 确认当前状态:nltest /sc_info:域名 查看 SecureChannel 状态及上次成功时间;
- 强制刷新通道:nltest /sc_reset:域名(需管理员权限,成功后会重建密码并同步至 DC);
- 若失败,可先退出域(sysdm.cpl → 更改 → 工作组),重启,再重新加入域;
- 长期预防:确保 MaximumPasswordAge ≠ 0,且域策略“域成员:计算机帐户密码最长使用期限”保持启用(推荐30天),避免人为禁用 DisablePasswordChange 注册表项。

















