凌晨两点接到电话,说机房那台跑业务系统的 Windows Server 2016 本地管理员密码没人记得了,早上八点要开机。这种场面我遇到过不止一次,也帮同事远程处理过 Win10 笔记本忘记密码的情况。重置密码这件事本身技术难度不高,但真正让人翻车的是:路径选错了、盘符认错了、收尾没做干净。这篇就把我这些年处理 Windows Server 2016 忘记密码、Win10 重置密码这类问题的完整思路摊开讲,从判断账户类型开始,到三种主流离线重置方案的具体操作,再到域控和 RDS 会话主机这种特殊场景,最后说清楚进去之后该怎么收口。内容只针对你自己有管理权的设备,涉及他人设备的操作不在讨论范围内。
1. 先分清你要救的是哪一类账户,走错门等于白折腾
1.1 本地账户、微软账户、域账户:三套完全不同的找回逻辑
很多人一上来就问"Windows 忘记密码怎么重置",但这个问题缺了最关键的前置条件——你说的是哪种账户。本地账户的密码哈希存在本机C:\Windows\System32\config\SAM文件里,离线把它改掉是最直接的思路;微软账户的凭据根本不在本机,登录时走的是在线校验,你在离线环境把本地 SAM 改得再干净也没用;域账户的凭据存在域控的ntds.dit里,本机只是做了一次缓存,改本地密码对域登录毫无影响。
这三种情况的处理成本差得很远。本地账户最快,二三十分钟能搞定;微软账户需要能联网、能进绑定的邮箱或手机号,属于"找回"而不是"重置";域账户则取决于你手上还有没有第二个有权限的管理员账号,有的话一条dsmod命令就解决了,没有的话难度直接跳到另一个量级。
所以动手前先在脑子里过一遍:这台机器登录界面显示的是什么名字?是DESKTOP-XXXX\用户名这种带机器名前缀的,还是直接一个邮箱地址?带机器名前缀或.\用户名的基本是本地账户;显示邮箱的是微软账户;显示域名\用户名的是域账户。这个判断决定了你后面所有操作的方向。
1.2 服务器端还要多问一句:这是独立服务器、域控还是 RDS 会话主机
服务器场景比客户端复杂,因为同一个"Server 2016 忘记密码"的标题下面,藏着三种完全不同的角色。
独立成员服务器最简单,本地管理员账户忘了密码,按后面的离线方法处理就行,跟 Win10 本地账户没什么区别。域控就麻烦了,域控上也有本地的 SAM,但真正要救的是 AD 数据库里的域管理员账户,这个必须走目录服务还原模式(DSRM)。RDS 会话主机则介于两者之间——它本身是成员服务器,本地密码好改,但它的身份是"服务器场里的一台机器",改完之后还要确认 Broker 那边有没有异常。
我在实际处理中见过最典型的一次误操作:运维同事在一台 RDS 会话主机上重置了本地管理员密码,然后直接用这个账户登录去改配置,结果因为这台机器同时是域成员,登录时走了域认证,输的是本地密码,系统提示凭据无效,来回试了几次触发了账户锁定策略,把域账户也一起锁了。这就是没分清账户来源的代价。
判断方法很简单:登录界面点"切换用户",看账户列表里有没有"域"的字样;或者在能进入系统的情况下跑whoami,看输出是机器名\用户还是域名\用户。
1.3 一眼判断法:从登录界面和提示文字倒推路径
登录界面其实会给你很多线索,只是大部分人没注意。
如果登录框下面有"密码重置盘"的链接,说明这台机器至少有一个本地账户,而且之前有人做过密码重置盘,这条路可以优先试试。如果有"我忘记了我的 PIN"但没有"忘记密码",说明这是微软账户绑定了 Windows Hello,PIN 是本地凭据可以重设,但底层还是要有账户密码或者能联网验证身份。
如果按 Shift 键五次会弹出"粘滞键"提示框,记下这一点——这说明sethc.exe这个可执行文件是正常加载的,后面替换方案可以用它作为备选入口。同理,登录界面右下角如果有"轻松使用"(辅助功能)图标,那么utilman.exe也是可用的入口。
服务器上还有一个特征:如果没有"关机"按钮、"重启"按钮的排列方式跟客户端不一样,或者界面语言是英文的 Server 版本,那么sethc.exe和utilman.exe的路径都在C:\Windows\System32\下,和客户端一致,替换方案完全通用。
把这些线索串起来,你大概三十秒内就能确定自己该走哪条路,而不是先折腾两个小时才发现方向错了。
2. 动手之前先把风险摁住:数据、介质、授权三件事
2.1 别把数据盘当系统盘:离线操作前的盘符确认
这是最容易出事的一步。在 WinRE(Windows 恢复环境)或者第三方 PE 里,盘符和正常系统里完全不一样。正常系统里 C 盘是系统盘,但在 WinRE 里,X 盘是内存里的虚拟盘,系统保留分区、EFI 分区、恢复分区都会各占一个字母,结果就是你的系统盘可能变成 D 盘、E 盘甚至更靠后。
我吃过一次亏:在一台多盘服务器上,系统盘变成了 D,数据盘占了 C,我当时想当然地往 C 盘路径上写文件,结果把一个数据盘的分区表搞出了异常,好在有备份。从那以后我改了习惯——不管多急,进命令行第一件事永远是确认盘符。
确认方法很朴素,就是用dir去试:
diskpart list volume exitlist volume会列出所有卷的大小和标签。系统盘一般有明显的特征:卷标可能叫Windows或者没有标签但容量跟你在 BIOS 里看到的系统分区对得上。更可靠的办法是直接找文件:
dir D:\Windows\System32\utilman.exe dir E:\Windows\System32\utilman.exe哪个路径能列出utilman.exe,哪个就是系统盘。这个动作花不到十秒,但能避免后面所有麻烦。
注意:在 WinRE 里执行任何带删除、格式化语义的命令之前,先跑一次
list volume看容量,别依赖盘符。盘符在离线环境下是不稳定的。
2.2 安装介质版本要与目标系统对得上
做启动 U 盘看起来是体力活,但版本匹配这件事真有不少人栽跟头。
目标系统是 Windows Server 2016,最稳的是用 Server 2016 的官方 ISO 做启动盘。理论上 Win10 的安装介质也能进 WinRE,因为两代的恢复环境内核是同一支,但我实测过几次,用 Win10 22H2 的介质去救 Server 2016,能进命令提示符,但偶尔会遇到加载存储驱动失败、看不到硬盘的情况,尤其是用了 RAID 卡的服务器,这是因为安装介质里缺对应的驱动。
反过来,用 Server 2016 的介质去处理 Win10 笔记本也没问题,只是没必要。
制作工具上,我现在基本只用 Rufus 或者 Ventoy。Ventoy 的好处是一个 U 盘能放多个 ISO,救急的时候不用现场重新做盘。分区模式一定要跟目标机器的启动模式匹配:UEFI 启动的机器选 GPT 分区方案,传统 BIOS 选 MBR,Rufus 里"分区类型"和"目标系统类型"两个下拉框要一起改。
还有一个细节:部分品牌的服务器(尤其带 RAID 卡的)需要在 BIOS 里把启动模式从 UEFI 切到 Legacy,或者反过来,否则 U 盘根本不出现在启动菜单里。这个不是技术问题,是耐心问题——把 BIOS 启动菜单的每一个条目都试一遍,通常能找到。
2.3 虚拟机与物理机的操作差异(含快照先行)
如果目标是虚拟机,恭喜你,难度直接降一个等级,因为你可以在动手之前先拍快照。
VMware 或者 Hyper-V 里,关机状态下创建一个快照,然后所有操作都在快照之后进行。万一改坏了,回滚快照就行,成本接近零。这个习惯我强烈建议养成——我在 ESXi 上处理过一台客户的生产 Server 2016,第一轮操作时误把一个服务的启动类型改成了禁用,回滚快照重来,前后不到五分钟。
虚拟机的另一个优势是挂载方式灵活。你可以直接把虚拟磁盘文件挂到另一台正常的虚拟机上,用那台机器的工具去编辑离线系统的 SAM,连 PE 都不用做。不过这种方式要求两台虚拟机在同一台宿主机上,且磁盘格式兼容,实际操作起来不一定比做 U 盘快,看个人习惯。
物理机就老实多了,没有退路,操作前唯一能做的就是确认数据有备份。如果这台机器上有业务数据库在跑,先联系业务方确认最近的备份时间点,再动手。
2.4 BitLocker 与安全加固带来的前置条件
这是最容易被忽略、也最容易让人白忙一场的一环。
如果系统盘启用了 BitLocker,离线方案基本全部失效——WinRE 启动后会先要求输入 48 位恢复密钥,输不对就进不去命令行。这种情况下你只剩两条路:找到恢复密钥(可能在 AD 里的 BitLocker 恢复密钥容器、微软账户的恢复密钥页面、或者打印出来的纸质副本),或者放弃数据直接重装。
企业环境里还有一层加固会干扰操作。有些终端防护软件会在系统启动时校验关键系统文件,发现utilman.exe被替换会直接告警甚至阻断启动流程。我遇到过一台装了某国产终端防护的 Server 2016,替换完重启后防护先弹了告警,然后自动从备份把文件还原了,等于白干。这种环境下,提前跟安全团队报备一下操作计划,让他们临时加白名单,比事后解释半天省事。
提示:动手前先确认三件事——系统盘有没有开 BitLocker、有没有终端防护软件、有没有域策略会强制覆盖本地安全设置。三个都确认完再开始。
3. 用安装介质替换 utilman.exe:不需要第三方工具的重置方案
3.1 这套方法为什么能成:SYSTEM 上下文与辅助功能程序的加载时机
先说原理,理解了原理你才知道什么情况下它不work。
Windows 的登录界面(LogonUI)是以SYSTEM账户运行的,它加载"轻松使用"面板的时候,会调用C:\Windows\System32\utilman.exe。而在登录界面这个阶段,SYSTEM拥有这台机器上最高的本地权限,包括修改任意本地账户密码的能力。
于是思路就很简单:如果把utilman.exe换成一个命令行程序(比如cmd.exe的副本),然后在登录界面点一下"轻松使用"图标,弹出来的就不是辅助功能面板,而是一个以 SYSTEM 权限运行的命令提示符。在这个提示符里执行net user命令改密码,系统不会拦你,因为它认为这是系统自己在操作。
同理,sethc.exe(粘滞键,连按五次 Shift 触发)也可以作为入口,原理完全一样。我用utilman.exe多一些,因为它的图标在登录界面上更显眼,不容易按错。
这套方法的好处是零第三方工具依赖,只要有官方安装介质就行;代价是需要手动回滚文件,且对 BitLocker 加密盘无效。
3.2 完整操作链路(含盘符偏移处理)
下面是我实际用的流程,一步一步来。
第一步,从安装 U 盘启动,在语言选择界面按Shift + F10,或者点左下角的"修复计算机",进入"疑难解答 → 高级选项 → 命令提示符"。
第二步,确认系统盘盘符,前面说过的方法:
diskpart list volume exit dir D:\Windows\System32\utilman.exe找到能列出文件的盘符后,假设是D:,执行备份和替换:
copy D:\Windows\System32\utilman.exe D:\utilman.exe.bak copy D:\Windows\System32\cmd.exe D:\Windows\System32\utilman.exe两个命令都要有"已复制 1 个文件"的回显,如果提示拒绝访问,检查是不是 BitLocker 没解锁,或者目标位置其实是个只读的恢复分区。
第三步,重启:
wpeutil reboot第六步,机器起来后停在登录界面,点右下角"轻松使用"图标,会弹出一个黑色命令行窗口。这时候先确认身份:
whoami回显应该是nt authority\system。然后列出账户:
net user找到你要重置的那个账户名,假设是administrator:
net user administrator P@ssw0rd2024如果提示"密码不满足密码策略要求",说明系统开了复杂度策略,换成带大小写字母、数字和符号的密码再试。如果提示"该账户已被禁用",先激活再设密码:
net user administrator /active:yes net user administrator P@ssw0rd2024设置成功后关掉命令行,用新密码登录系统。
3.3 复位后必须做的收尾:把 utilman.exe 换回去
这一步很多人做完密码就跑了,留下一个巨大的隐患——你的系统里现在有一个以 SYSTEM 权限运行的命令行入口,任何能物理接触这台机器的人,都能在登录界面点一下图标就拿到系统权限。
正确做法是再次从安装介质启动,进命令提示符,把文件换回去:
copy D:\utilman.exe.bak D:\Windows\System32\utilman.exe del D:\utilman.exe.bak确认一下替换后的文件大小和备份一致,然后重启。重启后在登录界面点一下"轻松使用"图标,如果弹出的是正常的辅助功能面板而不是命令行,说明回滚成功。
我个人的习惯是把这个回滚步骤写在便签上贴在显示器旁边,做完一项划掉一项。急着恢复业务的时候,人真的会忘。
3.4 实测中容易翻车的四个点
第一个是盘符偏移,前面说过了,dir确认法是最省事的。
第二个是sfc /scannow的自动修复。有次我忘了回滚,几天后运维团队例行跑完整性检查,SFC 从WinSxS里把原版utilman.exe拉了回来。表面上系统"自愈"了,但这个过程会在 CBS 日志里留下记录,安全审计的同事看到这条异常会来问你。所以别指望系统自己修,手动回滚才是正道。
第三个是域成员的缓存凭据。在域成员服务器上重置本地管理员密码后,如果这台机器之前缓存过域用户凭据,拔掉网线用旧的域密码也能登录。这不是找回手段,因为缓存凭据有有效期(默认 10 次登录或 90 天),过了就失效。别把希望寄托在这上面。
第四个是sethc.exe有时候比utilman.exe更好用。某些 Server 版本的登录界面在特定主题下"轻松使用"图标会被隐藏,但连按五次 Shift 触发粘滞键是系统级快捷键,不受界面影响。如果utilman那套没反应,换成替换sethc.exe再试。
4. 走 PE 路线:NTPasswd 一类离线密码编辑工具怎么用
4.1 PE 启动盘的制作与启动顺序
如果你不想折腾替换文件这种"手工活",用现成的 PE 工具会快很多。
PE 盘的选择上,国内用得多的是微PE和 Ventoy 配合各类 ISO。我的建议是准备一个 32GB 以上的 U 盘,用 Ventoy 装一个微PE的 ISO,再放一个官方 Windows Server 2016 的 ISO 做备用。这样无论是走 PE 工具还是走替换文件方案,一个 U 盘全覆盖。
制作过程没什么技术含量,Ventoy 装完之后是拖拽 ISO 文件进去就行,注意 U 盘本身要格式化成 exFAT 才能放大于 4GB 的 ISO 文件。启动顺序在 BIOS 或者服务器自带的启动管理器(比如 Dell 的 F12 一次性启动菜单、HPE 的 F9)里调,一次性启动菜单比进 BIOS 改永久启动顺序更安全,改完不用记得改回来。
服务器上还有个坑:如果开了 Secure Boot,某些老版本 PE 盘会因为引导程序没有签名而无法启动。这时候要么在 BIOS 里临时关闭 Secure Boot,要么换一个支持 Secure Boot 的 PE 版本。我一般选前者,做完操作再打开。
4.2 chntpw / NTPasswd 的操作节奏与局限性
进 PE 之后,打开密码工具。核心工具是chntpw,NTPasswd 是它的图形化封装,本质一样,都是直接读写C:\Windows\System32\config\SAM这个文件。
图形化界面的操作节奏是:选择 SAM 文件路径 → 工具列出所有本地账户 → 选中目标账户 → 选择"清除密码"或者"设置新密码" → 保存 → 重启。
命令行的chntpw也值得了解一下,因为有些 PE 里只有命令行版本:
chntpw -l /mnt/sda2/Windows/System32/config/SAM chntpw -u Administrator /mnt/sda2/Windows/System32/config/SAM第一条列出账户,第二条进入交互菜单,按提示操作。
关于"清除"还是"设置新密码",我的经验是优先选清除。原因在于chntpw这类工具对新版 Windows 使用的密码哈希算法支持并不完整,直接设置新密码有时候会写进去一个格式不对的值,导致系统认为密码无效但仍然拒绝空密码登录,反而更麻烦。清除密码之后,系统允许空密码登录,你进去第一件事就是设一个新密码,这样最稳。
局限性也说清楚:这类工具对域账户无效,因为域凭据不在本地 SAM 里;对微软账户无效,理由前面讲过;对启用 BitLocker 的盘无效,因为解密都做不到。所以在用它之前,先回到第 1 章确认账户类型。
4.3 微软账户登录的 Win10,改本地密码其实没用
这是 Win10 忘记密码场景里最常见的误解。
很多人的 Win10 用的是微软账户登录,登录界面显示的是邮箱地址。这种情况下,即使你用 PE 工具把本地的某个账户密码清了,登录时系统校验的还是微软账户的在线凭据,密码该不对还是不对。
正确的处理路径是:找一台能上网的设备,打开微软账户的密码重置页面,用绑定的手机号或者备用邮箱验证身份,在线重置密码。重置完成后,目标机器需要联网才能同步到新的凭据——如果它现在处于离线状态,你可以在登录界面点击"忘记密码"链接,按照提示走一遍在线验证流程,只要机器能连上网,同样能重置。
如果实在联不上网、也拿不到绑定的手机或邮箱,剩下一条路是把微软账户切换成本地账户,但这需要先进系统,是个死循环。这时候只能走重装或者用 PE 里的账户管理工具新建一个本地管理员账户,进去之后再迁移数据。新建账户这个操作 PE 工具能直接做——大多数密码工具都有"新建用户并加入 Administrators 组"的功能。
注意:新建本地管理员账户能让你进系统,但原微软账户下的用户配置文件(桌面、文档、浏览器书签)在
C:\Users\下是独立的,登录新账户看不到旧的桌面。需要手动去C:\Users\旧账户名里把文件拷出来,权限问题可以通过"安全"选项卡里的"高级 → 更改所有者"解决。
5. 域控与 RDS 场景:这里不是"改个密码"那么简单
5.1 域管理员密码丢失后走 DSRM 目录服务还原模式
域控上的本地账户密码好办,难办的是域管理员账户。整套思路跟前面完全不同。
如果环境里有多台域控,管理上会轻松很多——用另一台域控上的域管理员账户,直接dsmod或者 ADUC 图形界面重置密码就行,一分钟的事。真正棘手的是单域控环境,而且这台域控的所有管理员账户密码都丢了。
这时候走目录服务还原模式(DSRM)。DSRM 的密码是在域控安装时设置的,很多环境里当初设这个密码的人早就离职了,所以先做好心理准备——这个密码大概率也找不到了。
操作流程是在域控上执行:
bcdedit /set safeboot dsrepair shutdown /r /t 0重启后会进入 DSRM 登录界面,用 DSRM 密码登录。如果 DSRM 密码也不知道,可以从另一台域控上重置,或者在安装介质里进 WinRE 用ntdsutil的 "Reset DSRM Administrator Password" 选项。单域控的情况下,就只能在 WinRE 里做。
进 DSRM 之后,AD 数据库是脱机挂载的,你不能在这里直接改域用户密码,因为服务没起来。很多人到这一步就卡住了,实际上 DSRM 的价值在于:它让你以本地管理员身份进入系统,然后可以通过其他方式恢复域服务。
另一种做法是在域控上直接替换utilman.exe,从登录界面拿到 SYSTEM 权限的 cmd,然后执行:
net user administrator 新密码 /domain因为 SYSTEM 在域控上拥有足够的权限,这条命令通常能成功重置域管理员密码。但我要提醒的是,这个方法在启用了某些加固策略的域控上可能失败,而且它绕过了正常的管理流程,事后一定会在安全日志里留下痕迹。所以它是备选方案,不是首选。
不管走哪条路,恢复完成后一定要执行:
bcdedit /deletevalue safeboot否则机器每次重启都会进 DSRM,业务就起不来了。这个命令我强调三遍都不为过,见过两次忘记删的案例。
5.2 成员服务器与 RDS 会话主机的密码该从哪里重置
成员服务器和 RDS 会话主机,通常是域环境里的一员。这意味着本地管理员密码和域账户密码是两套东西,处理顺序上我建议先看域账户。
如果这台服务器上有域管理员组的成员账户,用那个账户登录,然后该干什么干什么,根本不需要动本地密码。只有当域账户也进不去、或者这台机器的域信任关系出了问题的时候,才需要动本地管理员账户。
动本地账户的方法跟独立服务器一样,走第 3 章或第 4 章的方案。但有一个细节:重置完本地密码后,如果你用本地账户登录,登录界面的"登录到"要选择本机而不是域,否则系统会拿这个密码去域控验证,必然失败,反复几次还可能触发锁定。
RDS 会话主机还有一个额外的考虑:如果这台机器属于某个 RDS 部署(集合),改完本地密码后最好检查一下 Broker 里的服务器状态。虽然本地密码跟 RDS 集合运行没有直接关系,但如果这台机器参与的是负载均衡或者重定向,任何配置变动都值得复核一遍。检查方法是打开"服务器管理器 → 远程桌面服务 → 概述",看集合里的服务器状态是不是都在"正常"。
5.3 补丁重启后会话主机提示 60 分钟断连的排查顺序
这个是热词里出现频率很高的问题,我把它跟密码场景放在一起讲,因为两者经常同时发生——运维在给会话主机打补丁、重启的窗口期发现管理员密码忘了,然后处理完密码又撞上这个提示。
现象是:给某一台 RDS 会话主机装了升级补丁并重启后,用户连到集合里其他的会话主机时,弹出一个提示,说会话将在 60 分钟后断开。
这个提示的来源,按概率排序有三个。
第一个来源是组策略里的会话时间限制。路径在"计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 会话时间限制",其中"为已断开的会话设置时间限制"和"为活动但空闲的远程桌面服务会话设置时间限制"如果被设成了 60 分钟,用户就会看到这个提示。用gpresult /h report.html在会话主机上生成策略报告,搜"时间限制"就能确认策略来源是哪条 GPO。
第二个来源是 RDS 授权。授权宽限期是 120 天,如果授权服务器出过问题、或者 CAL 数量不够导致诊断器报警,某些版本会给出会话即将中断的提示。用"RD 授权诊断程序"(在服务器管理器 → 远程桌面服务 → 概述里能找到入口)检查一下,它会直接告诉你哪里有问题。
第三个来源是集合内会话主机状态不一致。刚重启完的那台机器补丁版本跟其他机器不一样,Broker 在做重定向的时候可能把用户分到了还在"重启待完成"状态的机器上。检查方法是看每台会话主机的"配置"列,如果显示"需要重启",把该重启的都重启一遍。
排查顺序我建议是:先看策略,再看授权,最后看机器状态。因为策略问题改一次就永久解决了,授权问题需要换 CAL 或者调整授权服务器,机器状态问题等它自己重启完就好。
补丁窗口期的规范操作是:一个集合里的会话主机一台一台来,重启前先给这台机器设置"排空"模式,让新连接不再分配过来,等现有用户会话自然结束或者提前通知用户,再重启。PowerShell 里可以这样做:
Set-RDSessionHost -SessionHost "rdsh01.contoso.com" -NewConnectionAllowed No用户掉光之后重启,重启完再打开:
Set-RDSessionHost -SessionHost "rdsh01.contoso.com" -NewConnectionAllowed Yes这套流程能避免"用户正在用的时候被踢掉"这类投诉,也能减少会话状态异常带来的连带问题。
6. 进去之后:把临时通道收掉,给下一次留条正路
6.1 清理痕迹与复核完整性
能进系统只是第一步。用非正常手段进去之后,系统里可能留下了几处变化,需要逐一核对。
首先是utilman.exe和sethc.exe有没有被换回去。核对方法很简单,在正常系统里执行:
sfc /verifyfile=C:\Windows\System32\utilman.exe如果输出"Windows 资源保护未找到任何完整性冲突",说明文件是原版的。反之如果提示有冲突,就手动从WinSxS里恢复,或者再进一次 WinRE 用备份换回来。这一步必须做,别偷懒。
其次是检查一下有没有其他被意外改动的账户。执行:
net localgroup administrators看一下管理员组里是不是只有你预期的那些账户。如果多出来不认识的账户,说明这台机器可能之前就被动过手脚,需要进一步排查。
最后是翻一下安全日志,看有没有异常的账户变更事件。事件 ID 4720 是创建用户,4724 是重置密码,4732 是加入管理员组。正常情况下你会看到自己这次操作产生的记录,如果还有别的记录,时间点对不上,那就要查了。
6.2 本地管理员账户的收口策略
重置完密码,顺便把账户策略收拾一遍,这是我一直坚持的做法。
先看一下当前的密码策略:
net accounts输出的"最小密码长度"、"密码最长使用期限"、"锁定阈值"这几项决定了账户的安全性。如果最小长度是 0,锁定阈值是"从不",那这台机器基本是敞开的,随便爆破就能进去。建议至少设成:
net accounts /minpwlen:12 /maxpwage:90 /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15这几项的意思是:密码至少 12 位,90 天必须改一次,连续输错 5 次锁定 15 分钟,重置计数窗口 15 分钟。对服务器来说这是比较基本的配置。
内置的Administrator账户要不要禁用,取决于环境。微软的基线建议是禁用,改用一个命名不同、不在默认列表里的管理员账户。原因是爆破工具默认会拿Administrator这个名字试,改名或禁用能显著提高攻击成本。但很多老旧业务系统会硬编码依赖这个账户,禁用之后起不来,所以改之前先确认业务依赖。
6.3 密码重置盘、恢复账户与企业内的 LAPS 思路
处理完这一次,最该做的是给下一次留条正经的路,别每次都靠离线改文件。
对个人或者小团队的单机环境,密码重置盘是最实用的方案。制作方法是在还记得密码的时候,控制面板 → 用户账户 → 创建密码重置盘,插一个 U 盘按提示走完。以后忘记密码时,在登录界面点"重置密码",插入那个 U 盘,重新设一个就行。注意两点:密码重置盘只对本地账户有效,对微软账户和域账户没用;U 盘要保管好,它就是一把钥匙,谁拿到都能重置你的密码。
对企业的域环境,正规方案是 LAPS(现在叫 Windows LAPS)。它的思路是让每台机器的本地管理员密码都不一样,由系统自动定期轮换,密码存在 AD 或者云目录里,授权人员可以按需查询。这样既避免了"全网统一密码"这种一破全破的风险,也避免了"密码没人记得"这种运维困境。部署 LAPS 需要扩展 AD 架构、部署客户端组件、配置 GPO,属于中等规模的工作量,但一次投入能省掉后面无数次救火。
还有一层是恢复账户。企业环境里至少保留一个不受日常策略约束、密码存放在保险柜里的应急管理员账户,这是基本的风控习惯。我见过太多环境把唯一的域管理员账户密码交给一个人保管,那个人一离职,整个域就成了黑盒。
6.4 交接记录怎么写才不会再踩一次
最后说一下记录。每次处理完这类问题,我都会在运维文档里补一段,内容固定包含这几项。
设备标识:主机名、资产编号、物理位置或者虚拟机的宿主机信息。下次出问题时能快速定位到是哪台机器。
系统信息:是 Server 2016 还是 Win10,什么版本,系统盘在离线环境下的盘符是什么,启动模式是 UEFI 还是 Legacy。盘符这一项看着琐碎,但下次进 WinRE 能省掉几分钟的摸索。
加密状态:有没有开 BitLocker,恢复密钥存在哪里。这一项决定了下次能不能用离线方案,必须写。
账户情况:这次重置的是哪个账户,重置后有没有做策略调整,管理员组成员有哪些变化。
采用的方法:是替换文件还是 PE 工具,有没有回滚。这一项是为了下次能复用经验。
DSRM 密码存放位置:如果是域控,DSRM 密码存哪儿了必须写清楚,别让它再丢一次。
这些记录写起来花不了十分钟,但下一次出事的时候,它能让你从"从零开始摸索"变成"照着上次的笔记复现"。我在实际使用中发现,真正节省时间的从来不是技术多熟练,而是上一次的经验有没有被好好记下来。