
忘密码这种事经历过的人都懂那种绝望感——试了十几个常用密码全不对系统进不去桌面文件的整理、浏览器里存的一堆登录态、软件授权全部卡在门外。好多人第一反应就是重装系统但这代价太大了装完还得折腾驱动、软件、配置前前后后一两天就进去了。我自己是吃过这个亏的后来做了一款基于 Linux 启动盘的免费小工具专门用来清掉 Windows 的登录密码全程不用进系统也不用重装U 盘一插开机按几下按键几十秒就能把事情解决。需要先说明一个概念标题里虽然叫它 BIOS 工具但它并不是去改主板固件而是利用 BIOS/UEFI 的启动机制让电脑从 U 盘进入一个精简的 Linux 环境直接操作 Windows 存储在磁盘上的密码数据库文件。原理并不复杂但对于小白用户来说这套操作就像拿到了系统的后门钥匙所以这篇文章会从原理、工具制作、实操步骤到坑点排查完整讲透适合那些手边正好有一台进不去的电脑、又不想重装系统的人参考。1. 忘记密码到底卡在哪先搞清楚 Windows 把密码锁在了什么地方很多人以为 Windows 的登录密码是存在某个加密芯片或者系统内部的外接设备根本碰不到。实际上从 Win7 到 Win11 的大多数本地账户密码核心就存放在一个叫 SAM 的注册表文件里它的完整路径是C:\Windows\System32\config\SAM。这个文件保存的是用户账户的密码哈希值所谓哈希说白了就是用一种单向算法把密码转换成一串固定长度的字符——从哈希反推出原始密码在计算上非常困难所以破解密码这条路通常走不通但清空密码完全是另一回事。SAM 文件虽然有权限保护在 Windows 系统运行的时候即使你拥有管理员权限系统也不允许你随意读取和修改它因为这是安全机制的一部分。可问题是Windows 只在系统正常启动的时候才带上这把锁一旦我从 U 盘启动一套独立的 Linux 环境Windows 完全处于关机状态那 SAM 文件就只是一个躺在硬盘上的普通文件我自然就有了合法的读写权限。我用 Linux 挂载这个 NTFS 分区用一个小工具直接打开 SAM把里面某个账户的密码哈希清空再保存回去Windows 下次启动时就会认为这个账户没有密码直接就能登录。很多人会问那我重装系统不也是这个效果吗对效果类似但代价完全不同。重装系统会清掉整个 C 盘的数据桌面文件可能还没来得及备份浏览器里的收藏夹、各类应用的配置全都没了。而我用工具清密码是手术式操作只动 SAM 文件里那一个密码字段其他文件一概不碰所以个人文件、安装的软件、桌面布局全部保留。这也正是这个方案最大的价值所在。另外还要说清楚这个方案对两类情况格外适用。第一类是电脑里存着重要资料、又没开系统还原和文件备份的重装就相当于数据灾难这方法能救回来第二类是公司分发或家人共用的电脑密码是别人设的本身就不知道通过这个方法可以直接接管系统。当然前提是你对这台电脑有正当使用权是帮自己或身边人解决问题不是拿来干坏事。1.1 为什么清掉密码比重装系统靠谱只从尽快用上电脑这个目标来看重装系统表面上是万能解法但实际操作中它慢得很你需要准备系统镜像、制作安装盘、进安装界面分区、等待部署完成后装驱动装软件再加上 Windows Update 的一堆补丁一套流程走下来快则一个多小时慢的话半天就没了。而且很多人的文件其实是放在 C 盘桌面、文档文件夹里的重装系统如果选了全新安装这些数据在格式化分区时就会被抹掉等你反应过来已经晚了。清密码的方案走的是另一条逻辑我不去动系统本身只把门锁换掉。整个过程不涉及删除文件、不涉及重写分区表C 盘上的资料、软件、设置原封不动做完之后系统还是原来那个系统只是密码没了或重新设置了。省时省力而且风险更低——对电脑稍有了解的人都知道重装过程中一个断电或者误操作可能导致整块盘数据丢失而 SAM 文件单文件操作相对可控得多。1.2 这工具适合谁来用我写这个工具的初衷其实是给自己的小工具集合里补一个实用场景后来发现身边不少朋友都需要有的是忘了自己设的本地密码有的是帮家里人清理旧电脑还有的是回收二手设备时拿到一台密码不明的机器。这个方案的技术门槛其实不高只要你小学电脑课的水平就行关键在于动手之前理解几个核心概念启动顺序、U 盘、分区、SAM 文件。了解了这些后面照着操作就不会出大错。2. 工具选型与准备工作免费方案为什么选 Linux 启动盘 SAM 编辑工具做密码清除市面上倒是有不少商业工具比如某些集成在 PE 里的密码破解功能还有一堆收费软件。但我自己始终倾向免费开源方案原因很实在这类工具只需要在你电脑上跑那么几分钟用完就没了没必要为一次性需求付费开源工具的更新和代码透明性也好至少不用担心它里面藏着后门毕竟要操作的是整个系统盘。所以我最终用的是Linux 启动盘 chntpw这个组合。chntpw 是一款经典的开源 SAM 文件编辑工具在 Linux 发行版仓库里基本都能直接安装命令行接口清晰功能也正好够用。关于标题里的BIOS 工具我再补充一句我们在启动时调整的只是主板 Boot 选项让电脑从 U 盘而不是硬盘启动这个过程中没有任何固件刷写或者底层修改所以放心操作。2.1 你需要准备的东西清单动手之前先把材料准备齐了避免做一半发现缺东西。一台脑子进不去、但硬件正常的 Windows 电脑电源适配器记得接上清密码过程中断电是大忌一个 2GB 以上的 U 盘里面如果有文件先备份因为接下来会用启动盘制作工具格式化它一台能正常上网下载镜像的电脑可以是朋友或同事的国内网络环境下建议选一个下载速度快的 Linux 镜像源刻录工具我用的是 RufusWindows 上的免费工具或 balenaEtcher跨平台两个都很简单如果目标电脑是 UEFI 启动模式可能还需要在 BIOS/UEFI 设置里临时关掉 Secure Boot这个我后面单独讲。听起来东西不少但实际上普通人手边通常都能凑齐。关键是记住不要在开始做了之后才去下载镜像那样不仅浪费时间还容易因为网络波动或者文件不完整导致启动盘制作失败。2.2 启动盘制作这一步做错了后面全部白搭制作启动盘是整个流程中最容易翻车也最容易被忽视的环节。我的建议是选择主流的 Linux 发行版比如 Ubuntu Desktop 或者 Linux Mint因为它们对新电脑的硬件兼容性最好显卡、网卡、USB 控制器驱动基本都内置。有些精简 PE 工具虽然体积小但遇到 UEFI 较新硬件经常启动失败反而耽误时间。用 Rufus 制作时设备选择 U 盘引导类型选择磁盘或 ISO 映像点击选择加载 Linux ISO分区类型看情况——老机器选 MBR新机器一般选 GPT目标系统选 UEFI非 CSM。文件系统保持默认 FAT32 即可。点击开始后它会写入等待完成。有的发行版会提示以 DD 镜像模式写入如果你的 U 盘容量不大选 DD 模式也行写入更完整。制作完成后不要急着拔先把 U 盘安全弹出避免文件系统未写入完成。这里有一个细节绝大多数发行版在安装启动环境里并不自带 chntpw所以进入 Live 桌面之后你还需要联网打开终端用包管理器安装它。Ubuntu 系是sudo apt install chntpwArch 系是sudo pacman -S chntpw。如果你用的环境完全无法联网也可以在制作启动盘之前预先下载好 chntpw 的 .deb 包放到 U 盘另一个分区里但这会比较折腾我一般直接联网装反正只是几兆的小工具。3. 实操全过程从 U 盘启动到密码清除一步步来这部分是全文的核心我会按实际操作顺序讲每步都说明做完之后会发生什么方便你确认自己是否落在了正确轨道上。3.1 第一步设置从 U 盘启动把制作好的 U 盘插入目标电脑开机时马上按启动菜单键。不同品牌主板的按键不一样最常见的是 F12、F11、ESC少数是 F8 或 F10。我不可能记住所有机器的热键所以建议开机时留意屏幕下方提示通常会出现Press F12 for Boot Menu之类的字样。更保险的做法是开机进 BIOS/UEFI 设置界面在 Boot 选项卡里把 U 盘调到硬盘之前。如果你是 UEFI 模式遇到Secure Boot选项先把它设置为 Disabled保存重启。否则部分文件系统签名不对的启动盘会被安全启动机制拦下直接提示Security Violation或者根本没反应。这一步做完你应该能看到一个蓝色或紫色的 Linux Live 启动菜单选第一项Try or Install或类似的条目等一两分钟就能进入一个可操作的桌面环境。3.2 第二步找到 Windows 所在分区并用只读方式挂载进入 Linux 桌面后打开终端。第一件事是确认硬盘分区情况我习惯先执行lsblk它会列出所有磁盘和分区的简洁结构类似sda1、sda2、sda3这种名字。你需要找到哪个是 Windows 系统分区通常是容量最大、文件系统类型为ntfs的那一个。如果lsblk显示不够直观可以用sudo fdisk -l看更详细的分区表信息或者用sudo blkid查看分区的 UUID 和文件系统类型。假设系统分区是sda3那我执行sudo mkdir -p /mnt/windows sudo mount -t ntfs-3g /dev/sda3 /mnt/windows这里用ntfs-3g是因为它是 Linux 下最成熟的 NTFS 读写驱动。挂载成功后可以ls /mnt/windows看看里面是不是有Windows、Program Files、Users这些目录确认挂载对了。如果你只有一块硬盘且只有一个 Windows 系统定位不难但如果电脑里有多块硬盘或者之前装过多系统就要仔细一点别挂错了分区。判断标准很简单挂载后能看到Windows/System32/config/SAM这个路径就对了。注意挂载时不要加-ro只读参数虽然从安全性上只读挂载更保险但 chntpw 需要写入 SAM 文件才能把密码清掉。实际操作中我建议先用只读挂载确认目录正确、吹一眼 SAM 文件大小确认无误之后再重新以读写方式挂载。3.3 第三步进入 SAM 文件所在目录并执行清密码操作路径找到后执行cd /mnt/windows/Windows/System32/config ls -l SAM如果这个文件存在说明前面的分区没找错。然后运行 chntpw 查看用户列表sudo chntpw -l SAM输出中会列出 SAM 文件里的所有用户账户包括内置的 Administrator、Guest 以及你自己创建的那个账户名。这一步的价值在于确认你要清的用户到底叫什么有一些品牌机预装系统可能默认只有一个Administrator比较奇怪。拿到用户名之后比如叫xiaoming执行sudo chntpw -u xiaoming SAM这时候会进入一个交互式菜单里面有几项选项其中意义最大的是1 - Clear (blank) user password把密码清空登录时直接回车进入系统2 - Unlock and enable user account解锁被禁用的账户有时候配合密锁定或账户锁定场景使用3 - Promote user把普通用户提升为管理员某些情况下也用得到。输入1回车工具在你确认后会把 SAM 文件里的密码哈希清掉并写回。这个过程很快一秒钟都不到。它不会删除账户不会动你的个人文件只是让密码字段变成空白。清空之后输入q退出交互界面再执行sudo sync确保写入磁盘。最后可以cd ~离开挂载目录执行sudo umount /mnt/windows卸载分区。如果卸载时提示target is busy多半是你的终端当前工作目录还停留在/mnt/windows里面先cd出去就好。3.4 第四步重启验证与善后处理拔掉 U 盘重启电脑。正常情况下Windows 登录界面应该不再要求输入密码点一下账户直接进入桌面。如果你之前用的是本地账户这一步就完事了。如果之前登录用的是微软在线账户情况稍微复杂一点——工具清掉的其实是 SAM 文件里的本地认证信息但 Windows 可能与在线账户绑定这时开机后可能还是会提示要微软账户密码你可以在登录界面尝试直接回车或者选择登录选项切换到本地账户登录。遇到这种情况最稳妥的收尾是进系统后重新创建一个本地管理员账户把文件权限和常用设置切割过去或者直接在设置-账户-登录选项里把密码改成空或者换成新密码。进系统之后还有几个善后动作打开设置 - 账户 - 登录选项给账户设置一个新密码别真的一直保持空密码这对安全太不利了如果这次是因为忘了密码才折腾建议顺手开启 Windows 的密码重置磁盘功能或者把重要的文件同步到网盘防患于未然。4. 常见问题与排查技巧实录实际操作中几乎每个人都会遇到一两个奇怪问题我把自己和身边朋友踩过的坑整理成了一份速查表你按序号对号入座就行。4.1 U 盘无法启动的排查这是最高频的问题。先确认 U 盘在别的电脑上能被识别或者确认启动盘制作过程没报错然后检查目标电脑的启动模式——如果是 2018 年以后出厂的机器基本是 UEFI 启动绝大多数发行版的默认 ISO 都能同时支持 Legacy 和 UEFI但 Secure Boot 通常会拦人必须进 BIOS 关闭少数老主板在开启Fast Boot时也可能跳过 U 盘检测把它临时关掉再试。我个人的经验是如果你做的启动盘插上去开机画面一闪就自动进了 Windows那大概率是启动顺序没排到 U 盘或者你没按对启动热键。多试几次热键F12 不行就试 F11再不行就进 BIOS 手动排 Boot Order屡试不爽。4.2 NTFS 分区挂载失败或只读的问题挂载失败一般有两种一是缺少ntfs-3g驱动需要先sudo apt install ntfs-3g二是 Windows 没有正常关机比如快速启动或休眠导致 NTFS 分区处于脏状态Linux 出于安全考虑拒绝写入。遇到这种情况在 Windows 里先关机是无效的因为快速启动会让内核休眠而不是真正关机。我在 Linux 下会直接尝试用sudo ntfsfix /dev/sda3修复分区标记但这只适合没有重要写操作挂载等待的情况。最稳妥的做法是重启进入 Windows 时按住 Shift 点击关机强制完全关机再插入 Linux 启动盘操作。如果挂载成功但文件系统只读检查一下有没有把分区挂在同名目录下导致没写权限或者干脆用sudo mount -o remount,rw /mnt/windows一般都能救回来。4.3 BitLocker 加密怎么办这个话题我经常被问到。BitLocker 是 Windows 自带的整盘或分区加密功能开启后会生成一个恢复密钥。如果目标电脑的 C 盘开启了 BitLocker那 SAM 文件同样是加密的chntpw 读出来的就是乱码根本不可能改密码。碰上这种情况你有没有救取决于手里有没有那串 48 位的恢复密钥——有的话开机时按提示输入密钥进系统再在设置里关闭 BitLocker没有的话目前唯一可行的办法就是重装系统或格式化分区BitLocker 设计的初衷就是防止这种离线篡改绕过去在技术上基本不可能。所以如果你要对一台二手电脑做这类操作先问清楚有没有开 BitLocker免得白折腾半天。4.4 清除密码后登录异常的处理少数情况是清密码重启后Windows 登录界面倒是出现了但你点账户后它一直在转圈或者提示你已使用临时配置文件登录。前者一般是因为系统里绑定了微软在线账户它期望输入在线密码此时可以先断网再重启试试有些版本会自动放行本地会话后者是账户配置文件受损的迹象通常和你在 Live 环境里的操作没有直接关系更像是系统先前已有问题。遇到这种问题我的建议是进安全模式重启时按 Shift 选择 疑难解答-启动设置-重启再按 4 进入安全模式新建一个本地管理员账户能正常登录之后再考虑把原账户的文件迁移出来。别在登录界面上硬扛处理效率太低。5. 必须强调的安全边界与合法使用原则这个工具虽然方便但它本质上就是一个可以离线修改系统认证信息的后门。它好用的地方在于帮自己解决遗忘密码的麻烦但也要看到它的双刃剑属性。如果你捡到一台别人的电脑或者是二手收购设备在没有原主人授权的情况下用这种工具绕过密码进入系统在法律和道德上都是站不住脚的。我自己用的原则很简单只处理自己名下、或者在明确授权范围内维护的设备其他情况一律不碰。另外清空密码之后电脑在一段时间内处于裸奔状态——任何坐在你电脑前的人都能直接进去。所以完成后第一步就是设置一个强密码这个我前面已经提过但再强调一次不算多余。有条件的话同时开启 Windows Hello 或 PIN 码作为日常快捷登录方式但要注意 PIN 和账户密码是两套东西用户的密码重置盘也只能重置密码不能重置 PIN。我还想多说一点不要把这类工具作为日常忘记密码的依赖。密码管理这件事最省心的做法就是启用 Windows 自带的密码重置磁盘功能做一个重置盘放抽屉里或者把恢复密钥和重要账户信息存进密码管理器。工具是用来兜底的不是用来让你学会偷懒的。6. 我踩过的坑和最终心得做这套流程前前后后加起来我自己至少用在不同型号的电脑上试过二三十次。最坑的一次是单位的一台老联想UEFI Secure Boot 默认开启启动盘怎么都进不去BIOS 里关了 Secure Boot 又提示 CSM 无法启用后来发现是因为那块硬盘还是 MBR 分区表而 BIOS 里默认是 UEFI only 模式我把启动模式改成 UEFI with CSM 之后才顺利起来。所以遇到启动失败不要急先确认三件事启动顺序对不对、Secure Boot 关没关、CSM 模式是否兼容。还有一次做得比较惊险我挂载分区时手滑把命令里的sda3写成了sda2那个分区其实是个恢复分区幸好ls一看目录结构不对就退出来了没造成任何修改。这件事让我养成了一个习惯——挂载后先看目录确认那是 Windows 系统盘再做下一步磨刀不误砍柴工。从效率上讲这套流程一旦熟练从插 U 盘到进入桌面时间基本在十几分钟以内真正执行 chntpw 命令的时间只有几秒钟大部分时间都花在启动和定位分区上。老手甚至可以不进桌面直接在 GRUB 命令行里加载模块跑但我不会推荐新手这么干图形界面能大大降低误操作概率。最后再分享一个小技巧如果你经常要处理多台电脑的密码问题建议专门用一个 U 盘常驻 Linux 启动盘平时在 U 盘剩余空间里放几个常用工具比如 chntpw 的离线安装包、ntfs-3g 的备用驱动以及一个写清楚步骤的备忘文本。这样不管走到哪儿遇到忘密码的电脑插上 U 盘几分钟就能解决问题不用每次都临时下载镜像、制作启动盘。临阵磨枪容易崩常备不懈才是干这活的正确姿势。