Windows Server 2016与Win10本地账户密码重置全攻略
2026/9/18 1:40:15 网站建设 项目流程

机房里那台跑了三年的 Windows Server 2016,接手的时候前任运维早就离职了,交接文档里只写了"管理员密码见邮件",而那封邮件早被清空。或者更常见的场景:自己家里那台装了 Win10 的老笔记本,某天开机突然想不起登录密码,孩子还在旁边等着上网课。这类事我前后处理过不下二十次,从单机办公电脑到生产环境里的应用服务器都遇到过。

先说清楚一件事:下面讲的整套方法,前提是你对这台机器有处置权——自己的电脑、公司配发的设备、或者运维职责范围内的服务器。这是运维日常里的标准动作,不是拿来对付别人机器的。点进来的人最关心的无非三件事:密码到底能不能找回来、要不要重装系统、数据会不会丢。我把结论放前面:Windows 本地账户的密码找不回来,但可以重置;绝大多数情况下不用重装,数据也不会动;真正需要重装的场景比大多数人想象的少得多。全文围绕 Windows Server 2016 和 Win10 两条主线展开,顺带覆盖账户类型判断、工具选型、实操步骤和一堆只有踩过坑的人才知道的细节。

1. 先把原理摸清:Windows 的密码到底存在哪

1.1 SAM 文件、NT 哈希与那层 AES 加密

Windows 本地账户的口令不以明文形式躺在硬盘上,它存在C:\Windows\System32\config\SAM这个文件里。SAM 是 Security Account Manager 的缩写,本质是一个注册表 hive 文件,平时被系统独占锁定,只有在系统没启动、文件未被占用的状态下才能读写。这也是为什么几乎所有重置方案都得"关机、从外部介质启动、离线改文件"——不是工具做不到,是系统不给你机会。

SAM 里存的是口令的 NT 哈希(NTLM 体系里的那个 LM/NT hash)。哈希是单向摘要,不可逆。登录时系统把你输入的口令做同样的运算,比对摘要。这直接决定了一件事:你没法从 SAM 里把原口令"读"出来,只能写入一个你已知的新值。市面上所有号称"找回密码"的软件,底层做的都是重置,宣传语和实际行为不是一回事。

从 Windows 10 1607 和 Server 2016 这一代开始,SAM 的保护加强了一层:哈希在 syskey 之外还做了 AES 加密,密钥藏在SYSTEMhive 里。这个改动让一批只认旧格式的老工具直接失效,选工具时必须确认它声明支持 1607 之后的版本,否则你会看到"用户列表读不出来"或者"保存后密码没变"这类现象。

还有一处容易被忽略的存储位置:缓存的域凭据,在C:\Windows\System32\config\SECURITY里。如果这台 Server 2016 是域控,或者机器上有过域用户登录记录,处理逻辑完全不同,别拿本地账户那一套硬套。

1.2 为什么"重置"比"找回"更现实

很多人第一反应是去找"密码恢复软件",希望把原密码还原出来。这条路在理论上有唯一出口:彩虹表或暴力碰撞。NT 哈希没有加盐,理论上可以拿字典去撞,但前提是口令本身足够弱。长度超过 12 位、含大小写数字符号的口令,普通机器撞几年的意义也不大。实际工作中我从来不走这条路——不是技术上行不通,而是投入产出比太差,重置一个密码只要十分钟,破一个强口令可能要几个月。

重置这件事的本质,是绕过登录验证环节,直接改掉 SAM 里的那条记录。绕过的方式决定了方案的分类:一种是骗过系统,让它在登录界面把高权限程序交给你;另一种是根本不让 Windows 启动,在离线环境里动 SAM 文件。前者依赖系统自身的组件替换,后者依赖第三方 PE 工具。两条路各有适用边界,后面会详细拆。

这里插一句个人判断:能不能重置,取决于你能不能从外部介质启动这台机器。如果 BIOS 里设了开机密码、硬盘做了 BitLocker 全盘加密、机器启用了 Secure Boot 且锁死了启动项,难度会陡增一个量级。所以每次动手前,我第一件事不是插 U 盘,而是进固件界面看一眼启动顺序能不能改、加密状态是什么样。

1.3 本地账户、微软账户、域账户:三条路不能混着走

这是最容易被忽略、也最容易白折腾半天的一步。先判断账户类型,再选方案。

账户类型密码存在哪能否用替换法重置正确做法
本地账户本机 SAM可以替换辅助工具或 PE 离线改 SAM
微软账户微软服务器不可以联网状态下走在线重置流程
域账户域控 AD 数据库不可以域管理员在 AD 里重置,或用 DSRM
域控上的本地管理员本机 SAM(DSRM 账户)可以,但需离线操作离线改 SAM 或用 ntdsutil 重置

判断方法很简单:登录界面显示的账户名如果是邮箱格式、提示"使用 Microsoft 账户登录",那就是微软账户;如果显示"登录到某域名",那是域账户;如果就是一个普通用户名、下面写着本机计算机名,那就是本地账户。Win10 家庭版默认引导用户用微软账户,专业版和企业版可以选本地账户,Server 2016 则基本都是本地账户或域账户。

微软账户忘记密码的处理最简单也最麻烦:简单在于,拿手机或另一台设备打开账户管理页面,走验证流程重置密码,然后让这台机器联网登录即可;麻烦在于,如果机器一直离线、缓存的凭据过期、或者开了两步验证但手机号换了,那就得先想办法联网。域账户没什么好说的,找域管理员,或者用另一台有权限的机器上的Active Directory 用户和计算机重置。本文的重点放在本地账户,也就是 SAM 那套。

2. 方案选型:几套主流思路的取舍

2.1 替换辅助工具法:不装任何第三方软件

这是我最常用的方案,原因很实际:只需要一张 Windows 安装 U 盘,不需要额外下载任何来路不明的工具。原理是利用修复模式下的命令提示符——它以 SYSTEM 权限运行,而登录界面的"轻松使用"按钮背后调用的utilman.exe在系统盘上没有写保护,可以被替换成cmd.exe。启动后点一下那个按钮,弹出来的就是一个 SYSTEM 权限的命令行,想干什么都行。

优点是不依赖第三方工具、成功率高、对 Server 2016 和 Win10 都有效。缺点是步骤偏多,需要在修复模式和正常模式之间来回切换两次,而且如果不小心忘记还原utilman.exe,就等于给系统留了一个永久后门——任何人坐在登录界面按 Win+U 就能拿到 SYSTEM 权限,这比忘记密码严重得多。我会在后面的章节专门讲还原这件事。

同样的思路还有两个变体:替换sethc.exe(粘滞键,登录界面连按五次 Shift 触发)和替换osk.exe(屏幕键盘)。逻辑完全一致,区别只在触发方式。sethc.exe的触发更隐蔽(连按五次 Shift 就行),utilman.exe更直观(点图标)。我一般优先用utilman.exe,因为它不需要记住什么快捷操作,而且在 Server 上"轻松使用"图标一直可见。

2.2 PE 启动盘 + 离线 SAM 编辑工具

这条路走的是"根本不让 Windows 启动"的思路。用微 PE、优启通这类维护盘启动,运行 NTPWEdit 之类的工具,直接打开C:\Windows\System32\config\SAM,列出用户、清空密码或改成新密码、保存退出。整个过程三五分钟,比替换法快得多。

它有几个明显的适用边界。第一,PE 的位数要和目标系统匹配,虽然现在基本都是 64 位,但老 Server 2012 之前的机器要注意。第二,工具必须支持 1607 之后的 SAM 格式,否则读出来是空的。第三,如果目标磁盘开了 BitLocker,PE 里是看不到系统盘的,必须先拿到恢复密钥解锁。第四,某些 PE 自带的工具版本太旧,保存时不会再加密,导致改完之后系统压根认不了这个 SAM,直接进不去——这个坑我踩过一次,最后只能重装。

2.3 几种方案横向对比

方案工具需求耗时成功率适用场景主要风险
替换 utilman.exeWin 安装 U 盘10-15 分钟很高Server 2016 / Win10 本地账户忘记还原留后门
替换 sethc.exeWin 安装 U 盘10-15 分钟很高同上同上
PE + NTPWEdit维护 U 盘3-5 分钟通用工具版本不匹配会毁 SAM
在线重置联网 + 另一台设备5 分钟微软账户离线状态下无效
AD 重置域管理员权限2 分钟域账户需要域控可达
ntdsutil 重置 DSRM域控本机5 分钟域控本地管理员操作步骤敏感,易出错

选哪套,我的经验判断是:单人单机、手边恰好有 Windows 安装镜像,走替换法;批量处理或者需要经常做,准备一个专门的重置 PE 更高效;服务器在机房里、懒得跑现场,先想清楚能不能远程——远程基本只有域账户和微软账户两条路。

3. Windows Server 2016 实操:用安装镜像替换辅助工具

3.1 准备工作:启动盘和启动设置

先准备一张 Windows Server 2016 或 Win10 的安装 U 盘。这里有个实用细节:Server 2016 的安装镜像和 Win10 的镜像,在修复模式的命令提示符下,操作方式完全一样,所以你手上有什么就用什么,不需要专门去找对应版本的镜像。用 Rufus 把 ISO 写到 U 盘,分区方案选 GPT 对应 UEFI、MBR 对应传统 BIOS,写之前先确认目标机器固件的启动模式,写错了会无法引导。

启动前先进固件设置(一般是 F2、Del 或 F11),确认三件事:启动顺序里 USB 在前;如果开了 Secure Boot,要么临时关掉,要么用支持安全启动的镜像;磁盘如果有 BitLocker 加密,回忆一下恢复密钥在哪,48 位数字的恢复密钥一旦丢失,后面做什么都没用。另外顺手把系统时间和 BIOS 时间对一下,虽然影响不到本地账户登录,但后面如果涉及域环境会有麻烦。

关于 Server 2016 的一个特殊性:如果这台机器是域控制器,DSRM(目录服务还原模式)的密码是独立的,重置普通本地账户意义不大。判断方法是在修复模式里dir一下系统盘,看有没有Windows\NTDS这个目录,有的话就是域控。

3.2 在修复模式下定位系统盘并替换文件

从 U 盘启动,进到安装界面后不要点"现在安装",点左下角的"修复计算机",依次进入"疑难解答" → "高级选项" → "命令提示符"。弹出来的命令行窗口就是我们的主战场。

第一步是确认系统盘符。在修复环境里,盘符和正常模式不一样,系统盘经常变成 D: 或 E:。用下面这组命令逐个确认:

diskpart list volume exit

list volume会列出所有分区,一般系统盘那个卷有几十 GB 以上。也可以用更土但更直接的方法:

dir c:\ dir d:\ dir e:\

哪个盘里有Windows目录,哪个就是系统盘。假设确认下来是D:,接下来两行是核心操作:

copy d:\windows\system32\utilman.exe d:\utilman.exe.bak copy d:\windows\system32\cmd.exe d:\windows\system32\utilman.exe

第一行是把原始文件备份到系统盘根目录,第二行用 cmd 覆盖 utilman。这里有个细节值得说:为什么不备份到 U 盘上。理论上更安全,但实操中经常出现 U 盘在重启后盘符变化、或者现场人多手杂把 U 盘拔走的情况,备份放在系统盘根目录反而更容易找回来。文件名加.bak后缀是为了跟系统文件区分开,也不影响后续copy覆盖回去。

执行完会提示"已复制 1 个文件"。如果提示"拒绝访问"或"找不到路径",八成是盘符判断错了,退回去用dir重新确认。

3.3 重启、重置密码、还原文件

把 U 盘拔掉,正常重启,等登录界面出现。这时候点右下角的"轻松使用"图标(或者按 Win+U),正常情况下会弹出命令提示符。如果弹出来还是原来的轻松使用面板,说明替换没生效,检查一下是不是替换到了非系统盘。

命令行窗口里,先看看这台机器上有哪些账户:

net user

输出会列出所有本地账户。找到你要重置的那个,执行:

net user Administrator 新的密码

比如net user Administrator P@ssw0rd2024!。Server 2016 默认启用密码复杂度策略,如果设一个纯数字的简单密码,会报"密码不满足密码策略的要求"。两个选择:设一个符合复杂度的密码(推荐),或者临时把策略放宽:

net accounts /minpwlen:0

如果那个账户不是管理员,顺手提一下权:

net localgroup administrators 用户名 /add

改完密码,先别急着关窗口,先把 utilman 还原回去——这一步千万别忘:

copy d:\utilman.exe.bak d:\windows\system32\utilman.exe

加个确认参数防止误覆盖:

copy /y d:\utilman.exe.bak d:\windows\system32\utilman.exe

关掉命令行,用新密码登录,进去之后再把根目录那个备份文件删掉。整个流程到这里才算完整。

注意:还原 utilman.exe 这一步不是可选项。忘记还原等于在登录界面开了一个 SYSTEM 权限的入口,比原来忘记密码的风险大得多。我在一次内部安全检查里就发现过同事两年前留下的这个"礼物",当时惊出一身冷汗。

3.4 几个容易翻车的点

第一个坑是盘符。修复模式下的盘符映射和正常系统完全不同,特别是机器上挂了多个硬盘、有隐藏分区或者有双系统的时候。我的习惯是每次都用dir确认三遍,宁慢勿错,改错了盘可能把另一套系统的文件覆盖掉。

第二个坑是net user报了"用户名没找到"。Server 2016 上存在一种可能:账户名和实际 SAM 里的名字不一致,或者那个账户是域账户只是本机缓存了凭据。用net user不带参数列一遍,看看完整列表,找对应的本地账户。如果整台机器上的账户全是域账户,那这套方法救不了你。

第三个坑是密码策略。Server 2016 默认策略要求密码长度至少 7 位、且满足复杂性。如果这台机器被加固过,可能还有"密码最短使用期限"的限制,导致你改完之后立刻又被要求改。这种情况下用net accounts看一下当前策略,必要时临时调整,改完密码再改回来。

第四个坑是键盘布局。修复模式下的命令行默认是英文输入法,但如果你要用中文用户名或者带特殊符号的密码,注意符号的实际输入位置。我遇到过一次,密码里的@在某些键盘布局下打出来是别的东西,导致怎么输都登不进去。

4. Win10 忘记密码的实操路径

4.1 先分叉:本地账户还是微软账户

Win10 这一代最麻烦的地方在于账户类型混杂。同一台机器,可能开机引导建的是微软账户,后来又被 IT 改成本地账户,或者反过来。判断错了,后面的步骤全白费。

判断方法:在登录界面看账户名下面的那行小字。显示邮箱地址、或者写着"Microsoft 账户",那就是微软账户;显示计算机名或者没有额外说明的纯用户名,那就是本地账户。另一个辅助判断是登录选项:微软账户通常会有 PIN、指纹、图片密码等多种方式,本地账户一般就是密码和 PIN。

微软账户忘记密码,正确的做法不是在本地折腾,而是拿另一台能上网的设备,打开账户管理页面走"忘记密码"流程,通过绑定的手机号或备用邮箱验证身份,设置新密码。然后让这台 Win10 联网,用新密码登录。如果这台机器一直离线,会有个尴尬的中间状态:系统用的是缓存的旧凭据,联网后才发现凭据对不上。这时候先连上网,等系统同步完再登。

顺带说一个热词里经常出现的问题:Win10 登录界面弹出虚拟键盘、或者开着屏幕键盘还登不进去,这通常不是密码问题,而是触摸屏驱动或者辅助功能设置被误触发,进系统后到"设置 → 轻松使用 → 键盘"里关掉开机启动即可。

4.2 Win10 上的替换法:和 Server 2016 几乎一模一样

好消息是,Win10 的本地账户重置,流程跟上面 Server 2016 那套几乎完全一致:安装 U 盘启动 → 修复计算机 → 命令提示符 → 替换 utilman.exe → 重启点轻松使用 →net user改密码 → 还原 utilman.exe。不同点主要有三个。

第一,Win10 的启动界面语言和入口名称略有差异,有的版本"修复计算机"在"现在安装"左侧,有的在下一步页面里,找不到就在安装界面按 Shift+F10,这个快捷键能直接呼出命令提示符,省掉一层菜单导航。这个快捷键在大多数 Win10 / Server 2016 安装镜像里都有效,是现场最省时的技巧。

第二,Win10 家庭版和专业版的账户体系有区别。家庭版默认没有本地账户管理入口,很多用户是被自动创建的微软账户绑住的,重置思路要在 4.1 和 4.2 之间切换。专业版如果加过域,情况更接近 Server 的域账户处理。

第三,BitLocker 在 Win10 上普及率高得多。笔记本预装系统经常默认开启设备加密,进修复模式时会直接要求输入 48 位恢复密钥。这不是密码重置流程能绕过的,必须先拿到密钥。如果在场没有密钥,唯一的办法是从微软账户的设备管理页面查询——前提是这台机器当初是用微软账户登录并自动备份了密钥。

4.3 PE 离线改 SAM:更快但要求更细

Win10 上如果手上没有 Windows 安装镜像,或者不想走替换法那个来回折腾的流程,用 PE 启动盘 + NTPWEdit 是更省事的选择。流程是这样的:用维护盘启动进入 PE 桌面,打开 NTPWEdit,它会自动检测 SAM 路径,一般是C:\Windows\System32\config\SAM;如果检测不到,手动浏览定位。点击"打开",左侧列出所有本地账户,选中目标账户,点"更改密码"输入新密码,或者点"清空密码"(下次登录时密码为空,登录后系统会要求立即设置新密码),最后点"保存更改"。

这里有个实操细节值得单独讲:改 SAM 之前先备份原始文件。在 PE 里直接复制一份SAMSYSTEMSECURITY到 U 盘,因为这三个文件是配套的,工具改坏任何一个都可能导致系统无法识别账户。我遇到过工具版本过旧,保存时用了错误的加密方式,结果系统启动后所有账户都消失的情况,最后是把备份的 SAM 拷回去才恢复。

还有一点是 PE 的选择。不要随便从网上找来源不明的 PE 镜像,维护盘里有大量系统级权限操作,用来源不明的工具风险极高。比较稳妥的做法是用官方镜像配合成熟的制作工具自己做一个,或者用企业内部统一维护的版本。

5. 常见问题与排查实录

5.1 现场速查表

现象可能原因处理思路
修复模式里找不到 Windows 目录盘符判断错误diskpartlist volume逐个确认
提示"拒绝访问"无法复制目标盘不是系统盘,或文件被占用确认盘符,确认从 U 盘启动而非硬盘启动
重启后轻松使用还是老面板替换未生效检查是否替换到了系统盘,重新执行
net user报账户不存在是域账户或微软账户回 4.1 判断账户类型
改密码提示不满足策略密码复杂度要求设复杂密码或临时用net accounts调整
登录界面要求 48 位恢复密钥BitLocker 加密去微软账户设备页查密钥
PE 里看不到系统盘BitLocker 或驱动缺失先解 BitLocker,或换带驱动的 PE
改完 SAM 后账户全消失工具版本不兼容用备份的 SAM/SYSTEM/SECURITY 还原
重启后密码又变回原来的域策略强制同步域环境需在 AD 侧处理

5.2 三个只有踩过才知道的坑

第一个坑:备份文件留在系统盘根目录。这个看起来无害,实际上是个信息泄露点——任何登录进去的人都能看到一个叫utilman.exe.bak的文件,懂行的一眼就知道有人动过手脚。我的做法是重置完成后第一时间删除,如果这台机器安全要求高,还会顺手检查一下系统日志里的异常登录记录。

第二个坑:Server 2016 上 DSRM 密码和本地管理员密码的关系。如果你的 Server 2016 是域控,DSRM 的密码在域建立时设定,之后可能被单独改过。用ntdsutil重置 DSRM 密码需要在离线状态执行,流程比改本地密码复杂得多,而且操作失误可能导致 NTDS 数据库损坏。这种场景我建议不要自己硬上,把备份做好再动手。

第三个坑:改了用户名之后 users 目录不跟着变。这个是热词里提到的一个高频问题——在"计算机管理"里改了用户名,但C:\Users下的文件夹名还是旧的。这不是 bug,是设计如此:用户配置文件夹在账户创建时就固定了,改显示名不会重命名目录。想改的话得新建账户、迁移数据、再删旧账户,直接重命名文件夹会导致一堆软件路径失效。

5.3 排查的基本顺序

遇到问题别乱试,按这个顺序走:先确认账户类型(本地/微软/域),这决定了整个方向;再确认能不能从外部介质启动,这决定了可行性;然后确认有没有磁盘加密,这决定了是否需要额外密钥;最后才是选具体工具和步骤。前两步判断错了,后面的所有操作都是白费。我见过有人拿着 PE 盘折腾两小时,最后发现账户是域账户,密码压根不在本机——这种时间浪费完全可以避免。

6. 重置之后:收尾和加固

6.1 密码重置完必须做的几件事

很多人改完密码能登进去就以为完事了,实际上还有几件必做的检查。

第一,确认备份文件已删除、辅助工具已还原。用copy命令把utilman.exe从系统盘根目录覆盖回去,然后删掉备份文件。有条件的话,比对一下utilman.exe的大小和修改时间,确认跟原始版本一致。

第二,检查其他账户net user列一遍所有本地账户,确认没有多余的可疑账户,尤其注意有没有近期新建的、名字奇怪的账户。如果是接手别人的机器,这一步比改密码本身更重要。

第三,检查登录审计。在事件查看器里筛选安全日志,看 4624(登录成功)和 4625(登录失败)事件,确认没有异常时间点的登录记录。如果这台 Server 承载业务,这步不能省。

第四,确认开机启动项和计划任务。动手之前如果担心,可以先导出计划任务列表做对比。正常的密码重置流程不会动这些,但如果你用的是来源不明的工具,多做一层检查不亏。

6.2 从根上减少下次再忘的概率

做了这么多年运维,我的体会是:忘记密码这件事,九成不是记性问题,是管理问题。单机用户忘了密码,往往是因为当初设密码时随手设了个复杂的、又没记在任何地方;企业环境里出问题,基本是交接不规范、密码没有统一管理。

个人用户层面,我建议两条:一是把关键密码记在密码管理器里,不用记在脑子里,脑子里记住主密码一个就够;二是给本地账户留一个密码提示,或者干脆在安全的地方(比如纸质笔记本)留一份。听起来土,但远比忘记密码后折腾两小时划算。

企业层面,规范的交接文档是标配。我在自己团队里推行的一个做法是:每台服务器交付时,把本地管理员密码、BIOS 密码、BitLocker 恢复密钥统一存入密码库,交接时由双方负责人核对签字。这套流程看着繁琐,但真出事的时候能省下大把时间。

另外提一句,Windows Server 2016 已经过了主流支持期,如果这台机器还在跑生产业务,把密码重置完顺手评估一下升级或迁移的可行性,比反复处理密码问题更有价值。

提示:以上所有操作都要求你对目标机器有处置权限。未经授权的设备访问在任何场景下都不被允许,本文内容仅适用于自有设备和企业授权范围内的运维工作。

最后分享一个小技巧。如果你经常需要处理这类问题,可以准备一个专门的维护 U 盘,里面放上官方安装镜像和多一份备份的 SAM/SYSTEM/SECURITY 三件套的还原脚本。现场操作时先跑备份脚本,再动 SAM,出问题一键还原。我把这个做法带进过好几个项目组,实际用下来,意外情况下的恢复时间从半小时以上压到了三分钟以内,比任何所谓的高级工具都实在。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询