
手头一台 Windows Server 2016或者一台 Win10 工作站登录界面停在密码框前任管理员已经离职交接文档里没留一句密码信息——这种事在运维现场出现的频率远比圈外人想象得高。Windows 忘记密码本身不是什么玄学问题它本质上是如何在不登录系统的前提下,拿到一个可以修改本地账户凭据的入口路子清晰、步骤确定只要动的是自己有权处置的机器整个过程二十分钟以内就能收工。我写这篇东西是想把 Windows Server 2016 与 Win10 两条线上的密码重置做法一次讲透从底层存储原理、介质准备、命令行实操到 BitLocker 拦截、Secure Boot 挡路、替换文件被系统自动还原这些真刀真枪踩过的坑全部摊开说。适合谁看负责机房和办公终端的运维、要给自己老笔记本恢复访问的普通用户、以及做安全评估时需要验证物理接触即失守这个结论的技术人员。前提只有一条机器是你自己的或者你手里有明确授权。1. 密码卡住之前的认知铺垫先弄明白系统是怎么认你的1.1 三种典型的忘记密码场景处理路径完全不一样把场景分清楚能省掉一半无用功。第一种是个人机器、本地账户密码是几年前自己随手设的现在完全想不起来——这类情况最轻松因为没有第三方策略约束直接用安装介质进恢复环境就能改。第二种是公司配发的终端机器加入了域登录界面会提示登录到域或者同时给出本地账户选项这类要分清用户到底需要域账户还是本地账户如果只是需要一个本地管理员入口做维护改本地 SAM 里的账户即可如果业务软件依赖域身份那重置本地密码解决不了根本问题得去找域管理员走正规流程。第三种是服务器尤其是 Windows Server 2016 独立服务器与域控制器这两者的密码存储位置根本不同独立服务器看 SAM域控看 NTDS.dit方法完全不能套用。我见过不止一次有人拿改本地 SAM 的思路去搞域控折腾两小时毫无效果最后还是老老实实进 DSRM 模式。场景判断的具体动作很简单在登录界面看提示文字有域字样的基本就是域成员开机按 WinR 之前没法进系统那就看机器用途服务器角色可以用远程管理工具或者带外管理口确认实在不清楚就按独立服务器的方式先试成功率也不低。另外注意一个细节Windows 10 从 1803 之后大量个人设备默认用微软账户登录登录界面显示的是邮箱而不是用户名这种情况有个几乎零成本的在线重置通道根本不需要动介质。1.2 本地账户密码到底存在哪SAM 与 NTDS.dit 的分工理解这一步后面所有操作就都有逻辑支撑了。本地账户的凭据存在C:\Windows\System32\config\SAM这个文件里它本质上是一个注册表配置单元文件系统启动时由内核加载同时被独占锁定。密码不会明文存放存的是 LM 哈希现代系统基本禁用和 NT 哈希登录时系统把你输入的密码做同样的哈希运算比对结果一致就放行。这里有个关键点系统运行期间 SAM 是被锁死的任何程序都改不了它这就解释了为什么所有离线重置方案都必须先让系统停下来——要么从安装介质启动要么用 PE 盘启动让目标系统的 Windows 目录变成一个普通文件夹SAM 变成一个普通文件。域控制器的情况完全不同。域用户的密码存放在C:\Windows\NTDS\NTDS.dit这个 ESE 数据库里本地 SAM 里只剩一个几乎没用的本地账户集合而且域控默认没有可用的本地管理员账户来给你做跳板。所以替换 sethc.exe 然后 net user这套打法在域控上大概率无效你改的只是那个没人用的本地账户。域控对应的救援通道是 DSRM目录服务还原模式它用的是安装时设定的一对独立凭据开机进 DSRM 后可以登录登录之后再用系统自带的ntdsutil或者直接net user命令去重置域管理员密码这是官方文档里写明的恢复路径属于正规操作而不是野路子。顺便说清一个常被混淆的点改 SAM 里的哈希和拿到明文密码是两件事。前者是覆盖写入一个新的凭据成本低、成功率高后者需要彩虹表或算力去碰撞对复杂密码基本没戏。所以别在能不能把原密码还原出来上浪费时间直接重置才是正解。1.3 动手前的三项确认授权、加密、数据这三项确认花五分钟能避免后面两小时的返工甚至事故。第一项是授权范围机器是不是你负责的有没有书面或邮件形式的许可记录。这不是走形式企业环境里对终端做凭据重置而没留痕事后审计是要出问题的。第二项是系统盘是否加密Windows 10 专业版及以上如果开了 BitLocker或者家用版开了设备加密硬盘上的数据是加密的你用任何离线介质启动后看到的都是一块需要恢复密钥才能读的盘改不了 SAM。判断方法很直接如果登录界面出现过 BitLocker 恢复提示或者机器是近几年的品牌笔记本、出厂就绑定了微软账户那大概率已加密。密钥可能躺在用户的微软账户里account.microsoft.com/devices/recoverykey也可能被企业 IT 存进了 AD先去找密钥别硬来。第三项是数据取舍。密码重置对用户数据本身没影响但会切断一串依赖旧凭据的东西用 EFS 加密过的文件在没有导出证书的情况下会永久打不开Windows 凭据管理器里保存的共享密码全部失效域环境里缓存的域凭据失效后如果机器暂时联系不上域控用户就连域都登不进去了还有一些把密码写死在配置里的老旧业务软件改完密码它反而起不来。这些都是实测下来会真实发生的问题动手之前最好在脑子里过一遍这台机器上跑了什么。2. Win10 忘记密码四条路线按代价从低到高依次试2.1 路线一微软账户在线重置成本几乎为零登录界面显示的是邮箱地址而不是用户名那这台机器就是用微软账户绑定的这条路排在第一位。做法是换一台能上网的设备打开账户管理页面选忘记密码按手机号或备用邮箱完成验证重置成新密码后在目标机器上用新密码登录。前提是账户的验证方式还掌握在你手里。如果手机号换了、备用邮箱也不用了页面会引导走账户恢复申请流程需要填写大量历史信息审核周期通常以天计急不来。这条路还有一个变体值得知道如果机器能进入系统但忘了 PIN而账户密码记得登录界面点我忘记了我的 PIN走账户验证即可重新设置完全不涉及 SAM 操作。另外Windows 10 本地账户可以设置三个安全问题如果当初设了登录界面输错密码后会直接出现重置密码链接答对问题就能改。我在帮朋友处理家用机的时候大概六成的机器能靠这两条走完压根不需要动安装盘所以别一上来就想着做 PE。2.2 路线二借道同机其他管理员账户走系统内置通道一台机器上往往不止一个账户。如果存在另一个已知密码的管理员账户事情就简单了用它登录然后控制面板 → 用户账户选中被锁的账户执行更改密码或者直接开一个管理员权限的命令行用net user 用户名 新密码一步到位。命令行方式更干净也顺手能处理账户被禁用这种状态加上/active:yes参数就行。Windows 10 还有个默认禁用、但真实存在的账户叫 Administrator很多安装方式尤其是用应答文件批量部署的镜像会把它留在那里。它默认是关的但如果机器上恰好有一个能用的管理员账户可以直接把它激活以管理员身份运行命令提示符执行net user administrator /active:yes重启后登录界面就会出现 Administrator 选项密码为空可直接进入。这个操作的副作用是登录界面会多一个可见账户做完记得用/active:no关掉。注意这个内置 Administrator 账户在很多 Ghost 或第三方封装镜像里密码不是空的甚至被改成了固定值试之前先看看镜像来源有没有说明文档。这条路线的现实难点在于需要已经有一个可用管理员账户而现实里卡住人的场景往往就是唯一的账户密码忘了。所以它的实际价值是提前布局——如果你的机器上只有一个管理员账户现在就去开一个备用的用net localgroup administrators 备用账户 /add加进去平时不用关键时刻救命。2.3 路线三安装介质 WinRE替换辅助功能程序的标准打法这是流传最广、在 Windows 10 上成功率仍然很高的一条路。原理不复杂WinREWindows 恢复环境是从安装介质或恢复分区启动的一个精简系统它不以你的系统盘为根而是运行在内存里然后把你原系统的 Windows 目录当成一个普通文件夹看待。在这个环境里C:\Windows\System32下的文件是可以自由替换的而系统启动后登录界面上粘滞键辅助功能这些小工具是以 SYSTEM 权限运行的——把它们的可执行文件换成 cmd.exe等于在登录界面开了一个 SYSTEM 权限的命令行。具体操作分成几个明确阶段。先准备一个 Windows 10 或 Windows Server 2016 的原版安装 U 盘用它启动在语言选择界面按ShiftF10调出命令行。接着要确定系统盘的真实盘符因为在这个环境下盘符是乱的用diskpart加list volume看或者直接挨个dir试探找到含有Windows、Program Files目录的那个分区下面的命令假设它是C:。然后备份并替换cd /d C:\Windows\System32 copy sethc.exe sethc_bak.exe copy /y cmd.exe sethc.exe关机拔掉 U 盘正常启动到登录界面连按五次 Shift粘滞键本该弹出实际上弹出来的是命令行窗口。在这个窗口里执行net user 用户名 新密码改密码如果账户被禁用加/active:yes。做完关掉窗口正常登录进去之后第一件事是把文件还原回去以管理员身份开命令行copy /y C:\Windows\System32\sethc_bak.exe C:\Windows\System32\sethc.exe然后把sethc_bak.exe删掉不然域环境里安全扫描工具会把它当成可疑残留告警。之所以选 sethc 而不是别的文件是因为它的触发方式最省事——五次 Shift 不用记快捷键登录界面上原本就有响应。如果 sethc 因为某些原因改不动可以换成utilman.exe对应登录界面右下角的辅助功能按钮路径和操作完全一样。又或者换magnify.exe、osk.exe这些都能达到同样效果多备几个目标是稳的做法。提示Windows Server 2016 用这个方法同样有效服务器版本对 System32 下文件的一致性校验比桌面版宽松替换成功率高但服务器上通常有更合适的正规通道见第 3 章优先走正规路。2.4 路线四PE 盘离线改 SAM直击凭据库本身如果替换辅助功能文件这条路走不通——比如系统打了某个大版本更新之后做了完整性校验或者 WinRE 被管理员禁用、恢复分区被删——那就上最直接的一招用第三方 PE 启动直接对 SAM 文件做离线修改。原理是前面说的系统没启动时 SAM 就是个普通文件用 chntpw 这类工具可以直接读取账户列表、清空或重设指定账户的密码。我常用的工具是 NTPasswdchntpw 的 Windows 图形化封装把它集成到自己的 PE 盘里。启动 PE 后先确认目标系统的\Windows\System32\config目录重点文件是SAM、SYSTEM、SECURITY三个工具需要同时读取 SAM 和 SYSTEM 才能解析出账户信息。图形界面里选中账户选择清空密码或设置为指定密码。清空比设置更稳因为清空后的空密码在 Windows 登录界面直接回车就能进然后进去再自己设一个新的避免编码和策略不兼容的问题。这一招的优势是快绕开了所有登录界面层面的限制劣势是依赖第三方 PE 盘的可靠性来源不明的 PE 里塞了什么东西你未必知道建议自己用原版镜像配合可信工具手工做一个别从各种一键装机盘下载站随手拿。另外操作前一定先复制一份 SAM 备份到 U 盘万一工具写坏了还能还原回去。3. Windows Server 2016 密码重置从介质准备到域控特殊处理3.1 介质准备与启动方式确认服务器上的操作比桌面机多了两道门槛介质和启动方式。介质方面Windows Server 2016 的安装 ISO 一定要和系统版本对应Standard 和 Datacenter 的镜像虽然可以互换启动但混用有可能出现驱动或组件不匹配的提示用同版本的镜像最省心。刻录方式上传统 BIOS 服务器建议用工具把 ISO 写入 U 盘成可引导盘UEFI 服务器则更简单直接格式化成 FAT32把 ISO 里的文件全部拷贝进去就能引导不用做特殊处理。启动方式上物理服务器开机时留意 POST 画面给的快捷键常见的 F11 是启动菜单、F2 或 Del 是 BIOS 设置、F12 是网络启动。如果服务器带远程管理卡如 iDRAC、iLO、IPMI 之类那就更方便了直接在管理界面挂载虚拟光驱、设置下次启动项不用跑到机房里插 U 盘。这一点对托管机房的服务器尤其重要很多时候你根本没有物理接触的机会。进入安装界面后有一个细节必须确认不要点现在安装。很多人在这里手一快就点了进去结果走到分区选择界面看到硬盘上的分区手一抖点了格式化数据就没了。正确做法是点左下角的修复计算机进入疑难解答里的命令提示符。如果界面语言不对导致修复计算机位置找不到直接按ShiftF10也能直接调出命令行。进了命令行就等于进了手术室接下来所有动作都在这里完成。3.2 WinRE 命令行的完整操作记录与参数说明以下是我在一次实际恢复 Windows Server 2016 独立服务器时记录的完整流程盘符情况每台机器不同照抄前先探测。第一步确认当前环境下的盘符映射diskpart list volume exitlist volume会列出所有卷以及容量和标签服务器上通常能靠容量比如 120GB和标签认出系统盘。假设它显示为D:那就dir D:\看有没有Windows目录。若不确定dir C:\、dir D:\、dir E:\挨个试看哪个像刚才看到的那块盘。第二步进入目录并备份、替换目标文件cd /d D:\Windows\System32 copy sethc.exe sethc_bak.exe copy /y cmd.exe sethc.exe这里有个细节值得说如果系统分区被挂载成D:而恢复环境自身占用了C:替换的路径一定要写全别用相对路径容易改到恢复环境自己的文件上那台机器重启后行为会很诡异。第三步检查替换结果确认新文件的体积和 cmd.exe 一致dir sethc.exe dir cmd.exe两者大小应该完全相同几千 KB 级别如果 sethc.exe 还是原来的几百 KB说明替换失败通常是权限或者文件被保护换个目标文件重试。第四步退出、重启、拔介质。重启后在登录界面连按五次 Shift命令行窗口弹出。执行重置net user Administrator Pssw0rd_2024 net user Administrator /active:yes第一行改密码第二行确保账户启用。如果管理员账户名不是 Administrator先用net user不带参数列出所有账户名找到那个真正有管理员权限的可以用net localgroup administrators确认。第五步登录进系统后立刻还原copy /y D:\Windows\System32\sethc_bak.exe D:\Windows\System32\sethc.exe del D:\Windows\System32\sethc_bak.exe注意服务器上残留一个被替换的 sethc.exe等于留了一个人人可用的后门安全扫描会报合规审计会问务必在离开这台机器之前还原干净。3.3 域控不能照抄DSRM 模式的正确打开方式对域控制器用上面那套方法你会发现改完之后重启域管理员密码一点没变因为域凭据根本不在 SAM 里。域控的正确恢复路径是 DSRM目录服务还原模式。操作上分两步先让服务器以 DSRM 模式启动再改密码。启动 DSRM 有两种路径物理接触时开机按 F8 进高级启动选项选目录服务还原模式也可以用bcdedit配置一次性启动项bcdedit /set safeboot dsrepair shutdown /r /t 0重启后会进入类似安全模式的界面用 DSRM 密码登录。这里有个高频卡点DSRM 密码通常在安装 AD DS 时设定过如果当初没记它和域管理员密码是两码事很多管理员根本不知道还有这么一个密码存在。这种情况下可以先试试域管理员密码因为不少人在部署时把两者设成一样了不行的话就得走离线重置 DSRM 密码的路子思路和改本地 SAM 类似只是针对的是域控上的本地凭据存储。登录 DSRM 之后重置域管理员密码的命令是ntdsutil set dsrm password reset password on server null按提示输入两次新密码然后q退出两层菜单。也可以在这种模式下直接net user 域管理员账户 新密码 /domain。改完之后取消 DSRM 启动标志并重启bcdedit /deletevalue safeboot shutdown /r /t 0重启后域服务正常启动用新密码登录域。整个过程必须谨慎的地方在于DSRM 模式下的域数据库中 AD DS 是停止状态此时不要做任何无关的目录操作另外如果这台域控还有 FSMO 角色或者其他域控存在重置的只是这一台上的本地 DSRM 和域管理员凭据多域控环境建议重置后确认复制状态是否正常。3.4 虚拟机环境的简化流程虚拟机让这件事的门槛降到了地板。VMware Workstation 或 ESXi 环境下你不需要准备物理 U 盘直接编辑虚拟机设置把安装 ISO 挂到虚拟光驱上然后在虚拟机设置 → 选项 → 启动选项里勾选强制进入 BIOS 设置或者把启动顺序调整为光驱优先开机就能进安装界面。ESXi 上还可以在虚拟机启动瞬间按 ESC 调出启动设备菜单选光驱启动。后面所有步骤和物理机完全一致ShiftF10 开命令行、探测盘符、替换 sethc、重启、改密码、还原文件。虚拟机的一个额外好处是可以先打快照再操作万一改坏了直接回滚这个便利在物理服务器上是不存在的。但也别因为能回滚就大意生产虚拟机打快照本身有性能影响操作完记得合并或者删除快照别留一堆挂着。虚拟机上唯一需要额外注意的是嵌套虚拟化和 Hyper-V 相关配置。如果目标虚拟机的磁盘是 VHDX 动态扩展盘在某些老版本的虚拟化平台上用安装介质启动会比较慢别急着以为卡死了多等一会儿。4. 常见问题排查速查表与踩坑实录4.1 看不到系统盘或找不到 Windows 目录这是最高频的问题本质是盘符映射混乱。WinRE 下你的系统盘可能被挂成 D、E 甚至 F而 U 盘、恢复分区、EFI 分区各自占用了别的字母。解决方法是用diskpart的list volume看容量和类型系统盘的特征是容量最大、文件系统 NTFS、标签可能是Windows或者空白。另一种更直接的探测是遍历盘根目录for %d in (c d e f g) do if exist %d:\Windows\System32\sethc.exe echo %d这条命令会把所有存在目标文件的分区列出来通常只有一到两个结果很好判断。如果所有盘都找不到Windows\System32那就要警惕是不是磁盘阵列没被识别或者磁盘本身有问题这就不是密码问题了。如果系统盘是 NVMe 或者 RAID 阵列还需要确认安装介质里带没带对应驱动。Server 2016 原版镜像对常见 RAID 卡的支持还算全但如果服务器用了较新的阵列卡可能需要在安装界面手动加载驱动否则list volume里根本看不到那块盘。4.2 替换文件失败或被系统自动还原替换失败的表现是重启后按五次 Shift 没反应或者弹出来的还是原本的粘滞键面板。原因通常有三种一是替换的对象路径不对改到了恢复环境自己的目录上二是copy命令因为文件占用或者权限不足失败可以在命令后加 echo OK确认执行结果三是系统启动时做了文件完整性校验把改动抹掉了这种情况在启用了某些企业安全策略的机器上会遇到。对策上先换目标文件从 sethc 换成 utilman、magnify、osk 三选一总有一个能成。其次可以试试先给目标文件改名再复制绕开可能存在的写入保护ren sethc.exe sethc_orig.exe copy cmd.exe sethc.exe如果所有辅助功能程序都替换不了说明系统层面的保护比较严直接走 PE 离线改 SAM 那条路别在这儿死磕。4.3 密码改完还是登录不上改完密码登录失败八成是改错了对象。登录界面显示的账户名可能和你在命令行里看到的账户名不完全一致尤其是中文用户名、带空格的用户名、或者微软账户的显示名。先确认要改的到底是哪个net user这会列出本机所有本地账户。如果登录界面上那个账户不在这个列表里说明它是域账户或者微软账户改本地 SAM 没用。域账户需要域管理员在域控上重置微软账户走在线重置。另一种情况是登录时提示用户名或密码错误但密码确实是对的那可能是键盘布局问题——服务器上默认可能是英文键盘你在屏幕上输入的字符和实际不一样尤其是密码里有 、#、! 这类符号。登录界面右下角可以切换输入法改成实际使用的布局再试。还有一种容易被忽略的情况账户被锁定了。企业策略里通常有输错 N 次锁定账户的设置如果你前面试了几次密码账户可能已经处于锁定状态这时候即使密码正确也进不去。等锁定时间过去或者用命令行net user 用户名 /active:yes处理后重试。4.4 常见报错与处理对照现象大概率原因处理方式启动安装介质后提示缺少介质驱动程序安装介质缺失存储控制器驱动从厂商官网下载驱动放进 U 盘\sources目录在安装界面手动加载登录界面出现 BitLocker 恢复提示系统盘被加密到微软账户或 AD 中找恢复密钥解锁后再操作copy提示拒绝访问目标文件被保护或路径错误确认路径改用rencopy组合或更换替换目标按五次 Shift 无反应替换未生效或系统做了完整性还原换 utilman/magnify/osk 重试或改用 PE 离线改 SAMnet user提示系统错误 5权限不足确认命令行是用 SYSTEM 或管理员身份启动的正常情况 WinRE 里出来的是 SYSTEM域控上改本地账户无效域凭据不在 SAM 中改用 DSRM 模式通过ntdsutil处理改完密码后桌面配置丢失用户配置文件损坏或凭据失效检查C:\Users\用户名目录是否存在必要时重建配置文件虚拟机内操作后无法进入 BIOS启动窗口太短在虚拟机设置里勾选强制进入 BIOS 设置或延长启动延迟实操心得把这张表里的每一条都当回事因为它们都是我或者身边人在真实环境里撞过的。尤其是 BitLocker 那一条很多人第一次遇到的时候会花大量时间去怀疑介质和分区表实际上问题出在加密上找密钥才是唯一出路。5. 重置完成之后副作用清单与长期防坑5.1 密码重置会扯出哪些连带影响重置密码不是终点它只是恢复访问的第一步。改完之后有几类东西需要挨个确认。第一类是 EFS 加密文件如果这台机器上有用户用 EFS 加密过文档密码重置会导致加密密钥链断裂必须用当初导出的证书才能恢复没有证书基本无解。判断方法是在命令行执行cipher /c 文件名能看出文件是否被 EFS 加密。第二类是 Windows 凭据管理器里保存的网络共享凭据控制面板 → 凭据管理器里会看到一串失效条目删掉重新输入即可不处理的话访问共享时会反复弹窗。第三类是浏览器和各类客户端保存的登录状态本地密码变了通常不影响这些但如果当初保存凭据时勾选了由 Windows 保护可能也需要重新登录。服务器上还有一类更实际的影响以某个服务账户身份运行的服务如果那个账户的密码被改了服务会启动失败。所以服务器重置完成后务必检查一遍计划任务和服务列表看有没有用被改账户身份运行的项。另外域环境里如果客户端缓存的域凭据失效且短时间内联系不上域控用户会无法登录这种问题通常等网络恢复或者用本地管理员账户先登录处理。5.2 把这类事故的发生概率压到最低密码这件事靠记性是最不靠谱的方案我见过太多人在这上面翻车。比较务实的做法有几条。一是机器上永远保留至少两个管理员账户一个日常用一个备用且几乎没有登录记录备用账户的密码写在密码管理器里或者企业密码库中不要和日常账户用同一套密码。二是企业环境里给每台终端配 LAPS 之类的本地管理员密码方案密码由系统统一保管和轮换管理员不需要知道单机密码也能完成维护这从根上消掉了离职就断档的问题。三是关键服务器和存放重要数据的机器把 BitLocker 恢复密钥登记到 AD 或者专门的密钥管理系统里不要只依赖个人微软账户毕竟账户本身也可能联系不上。再补一条个人经验任何一次密码重置操作都在自己的操作记录里写清楚机器名、时间、操作内容、是否还原了被替换的系统文件。这既是给自己留个链条也是万一后续安全审计问起时能拿出说明的材料。我刚开始做这行的时候没这个习惯后来有一次被问上个月那台服务器谁动过翻遍记录只找到半个模糊的文件名那种被动感很难受从那以后就养成习惯了。6. 权限边界这件事值得单独说一句写到这里方法层面基本说完了。但我还是想把这层意思单独拎出来强调上面的所有操作前提是你处置的是自己拥有、或者持有明确书面授权的设备。本地管理员密码重置、DSRM 密码恢复这类技术本身是中性的运维手段企业 IT 用它挽救业务连续性安全团队用它验证物理接触即失守这条基本假设都是正当用法。但同样的手段用在别人的设备上性质就完全不同了涉及的问题不在技术范畴内是另一个层面的责任。所以如果你正在读这篇东西是因为手头一台自己的机器或者公司授权范围内的机器卡住了那就放心往下走按章节顺序做二十分钟左右就能收工如果你是抱着别的目的来的那这一页对你没有价值。技术本身没有立场用技术的边界得自己守住。我个人在实际操作中的体会是越是清楚边界的人做这类操作越稳——因为他们会认真确认授权、仔细备份数据、完事之后老老实实还原文件而不是图快图省事。所谓的稳说到底就是这些看似琐碎的动作一点没省。