☰
Windows密码忘了?自制U盘工具几秒清除SAM密码,保留全部数据
2026/10/13 10:20:54 网站建设 项目流程

前阵子一位朋友抱着笔记本来找我:Windows 登录密码彻底想不起来了,里面还有一堆没来得及备份的期末资料,急得差点直接格式化重装。其实这种情况完全不用走到重装那一步。我写了一个免费的 BIOS 级小工具,做成启动 U 盘后插在电脑上,开机从 U 盘引导,几秒钟就能把本地账户密码清掉,然后正常进系统、保留全部数据。这篇文章就把工具背后的原理、制作步骤、实测过程和容易翻车的点一次性讲清楚,适合忘记密码的普通用户,也适合想搞明白 Windows 登录认证机制的技术爱好者。先说明一点:这套方法只能用于自己的电脑,或者在对方明确授权的前提下使用,别拿它干不该干的事。

1. 忘密码后的那点事:与其折腾登录框,不如直接改 SAM 台账

1.1 登录校验的真相:系统比对的是哈希,不是密码明文

很多人以为 Windows 登录时是拿你输入的密码去“对照数据库里的密码”,如果一样就放行,但其实不是这么回事。Windows 本地账户的密码信息存放在一个叫SAM(Security Account Manager)的文件里,路径是C:\Windows\System32\config\SAM。这个文件里不会存你设置的明文密码,而是存密码经过哈希算法处理后的“指纹”,一般叫 NTLM 哈希。登录的时候,系统把你输入的密码也做一次同样的哈希计算,再和 SAM 里存的哈希比对,一致就通过。

打个比方:SAM 文件就像小区门卫手里的住户登记台账,但台账上记的不是“钥匙长什么样”,而是“钥匙插进锁芯后留下的齿痕特征”。门卫只认齿痕,不认钥匙本身。这里最关键的一点是:只要台账上的齿痕特征被改掉或抹掉,原来的钥匙就失效,甚至不需要钥匙都能进门。

所以清密码的本质,不是在登录界面破解什么,而是绕过登录界面,直接去改 SAM 这个台账文件。

1.2 系统没运行时,SAM 是一份“睡着”的文件

平时 SAM 文件被 Windows 锁死,你就算拿到管理员权限也很难直接改它,因为系统正在运行,文件在被占用且被特殊保护。但换个思路:Windows 没启动的时候,这个文件不过就是硬盘上的一份普通数据。只要我们能从另一个独立的系统启动电脑,挂载起这块硬盘,就可以直接读取、修改这份“睡着”的文件。

这就是我一开始说“BIOS 工具”的含义。严格来讲,它不是一个运行在 BIOS 里的程序,而是一个基于 UEFI/BIOS 引导阶段的独立微型系统。电脑开机先走 BIOS 或 UEFI 固件,固件决定从哪个设备启动。如果此时插着我们的 U 盘、并将启动顺序调到 U 盘优先,那么机器就不会进入 Windows,而是进入 U 盘里的微系统。在这个微系统里,Windows 还没运行,SAM 对我们就完全开放了。把这个“黄金窗口”利用好,密码问题就变成了一个简单的文件编辑问题。

1.3 常见的替换法、粘滞键法和命令行法为什么不理想

网上流传比较广的做法有几个,但各有毛病:

  • 粘滞键替换法:在登录界面按五次 Shift 触发粘滞键,实际上是把sethc.exe替换成cmd.exe。这招的前提是电脑能正常启动到登录界面,而且系统文件没被严格保护。实测中经常遇到 Windows 更新后替换失败、系统文件校验拦截、甚至误操作导致系统损坏的情况,而且操作过程啰嗦。
  • PE 下用net user命令重置:如果你用的是 Windows PE 环境,在里面敲net user 用户名 新密码大概率会失败,因为net user针对的是当前正在运行的系统账户数据库,而不是离线状态下另一块硬盘里的 SAM。真要在 PE 下改,得借助读取离线 SAM 的工具,普通用户根本不会操作。
  • 直接替换 SAM 备份文件:有人想用C:\Windows\System32\config\RegBack里的备份覆盖现有 SAM。这方法非常暴力,会丢掉原有所有本地账户和密码策略,而且不同镜像版本的 SAM 结构还有差异,搞不好系统直接起不来。

相比之下,定点清除 SAM 里目标账户的密码哈希,是最精准、副作用最小的路。我的工具走的就是这条线。

2. 工具链路拆解:从 U 盘引导到 SAM 清密,每一环都要稳

2.1 启动介质选型:为什么我选了轻量 Linux 微环境而不是完整 PE

做这个工具之前,我先对比了几类启动介质方案。这里直接给结论:

方案体积引导速度NTFS 读写SAM 解析能力制作难度兼容性
完整 Windows PE2GB 以上慢,加载一堆驱动原生支持需要额外工具中好,但体积大
定制 Linux 微系统50MB 以内快需 NTFS-3G自己有工具链中很好,可裁剪
老式 DOS 工具几 MB极快较弱有限高对 UEFI 不友好

我最终选择了基于 Linux 的轻量微系统,理由很直接:它足够小,U 盘启动快;NTFS 读写有成熟的 NTFS-3G;SAM 解析逻辑我可以自己写;而且 Linux 微系统对主板的 UEFI 支持远胜 DOS 老工具。完整 PE 当然也能干这事,但你得先准备一个大 U 盘,启动还要等半天,做成一个“开机几秒清掉密码”的轻量工具根本不现实。

2.2 SAM 里的“手术”到底做了什么

工具运行后,做的事可以拆成五步:

  1. 扫描并挂载系统盘:识别出哪块硬盘哪个分区装着 Windows,一般是C:所在的分区,格式是 NTFS。
  2. 定位并加载 SAM 配置单元:找到Windows\System32\config\SAM,将其作为一个注册表配置单元加载到内存。
  3. 枚举本地账户:读取SAM\SAM\Domains\Account\Users下的键,列出所有本地账户,比如 Administrator 和你日常用的账户。
  4. 清除目标账户的密码哈希:把该账户注册表项中记录的 NTLM 哈希值抹掉,同时把账户状态调整为“密码为空”的正常状态。
  5. 卸载配置单元并安全退出:确保写回磁盘后数据落盘,然后重启。

这里特别说明一点:我刻意避免了“替换整个 SAM 文件”的做法。因为一个完整的 SAM 里不止有密码信息,还有账户 SID、组成员关系、密码策略、最近登录时间等。整文件替换等于把这些新老信息全部弄乱,很容易引发账户丢失或权限错乱。而定点清除只改动密码哈希这一个区域,对系统其他部分毫无影响。

下面是我在工具里实现核心逻辑时的伪代码思路,真实工程实现会更复杂,但骨架就是这样的:

# 概念性伪代码,真实实现需处理注册表 hive 的底层结构 def clear_user_password(sam_file, target_user): hive = load_registry_hive(sam_file) # 加载 SAM 配置单元 users_root = hive["SAM\\Domains\\Account\\Users"] for user_key in users_root.keys(): if get_username(user_key) == target_user: v_value = user_key["V"] # 密码信息存储在 V 值中 v_value.clear_password_hash() # 将 NTLM 哈希字段清空 user_key.set_password_required(False) # 标记为无需密码 hive.unload() # 写回并卸载

2.3 “几秒清完”的时间账

标题用了“几秒钟”这个说法,得解释清楚:整个流程包括开机引导和重启,真正操作其实非常快。我实测的典型时间线如下:

阶段耗时(UEFI+固态硬盘)
开机进引导菜单约 2-3 秒
选定 U 盘启动并加载微系统约 3-5 秒
自动扫描硬盘分区并识别 Windows约 1-3 秒
挂载 NTFS 分区并定位 SAM约 2-5 秒
清除密码并写回约 1 秒
重启进入 Windows约 5-8 秒

也就是说,选完 U 盘启动到清完密码,通常在 15 秒上下;加上重启,大概 20 多秒就能看到登录界面直接按回车进入系统。如果是老机械硬盘,扫描和挂载时间会长一点,但整体也就一两分钟。

3. 制作启动 U 盘与实操步骤:把每一步都拆开来看

3.1 制作启动盘的三个前置准备

第一件事是准备一个 U 盘,容量不用大,256MB 都绰绰有余,因为整个启动环境很精简。但 U 盘格式有讲究:建议格式化成 FAT32 或 FAT,因为 UEFI 固件对这两种格式兼容性最好。用 exFAT 或 NTFS 格式的 U 盘在某些主板的 UEFI 引导下可能会直接识别不到。

第二件事是制作引导盘时一定要看清目标设备。写盘操作会清空 U 盘全部数据,如果机器上同时挂着好几块 U 盘或移动硬盘,一不留神就会写错目标,把重要数据盘变成启动盘,那就得不偿失了。我自己的习惯是:写盘前拔掉所有无关存储设备,只留目标 U 盘和系统盘。

第三件事是提前确认电脑的Secure Boot(安全启动)状态。定制微系统如果没做签名,在开启 Secure Boot 的机器上会被拦在引导阶段,直接黑屏或提示无法验证签名。要么临时关闭,要么给引导文件签名。我做的版本内置了第二种处理思路,但保守起见,实测新机器时我还是建议先临时关闭,清完密码再打开。

3.2 完整操作流程:从开机到登录界面

这里我把整个操作串一遍,跟着做就行:

  1. 把写好的 U 盘插入目标电脑的 USB 接口(优先机箱后置接口,稳定)。
  2. 开机,立刻按启动热键进入引导菜单。常见的键是F12、F2、Del、Esc,具体看开机画面底部提示。这一步进不了系统无所谓,反正本来也进不去。
  3. 在引导菜单里选择 U 盘对应的启动项,命名为 USB 或品牌型号字符串,选择后回车。
  4. 等待几秒,进入工具的菜单界面。界面会列出检测到的硬盘分区,自动标出哪个是 Windows 系统分区。
  5. 选中 Windows 系统分区,工具会自动加载 SAM 并枚举本地账户,逐个列出用户名。
  6. 用键盘上下键选中你忘了密码的那个账户,回车确认。
  7. 工具会弹出一个风险提示,问你是否确认清除该账户密码。确认后看到进度提示,一秒左右完成。
  8. 拔掉 U 盘,重启电脑。此时 Windows 登录界面里这个账户的密码已经为空,直接回车或点击登录就能进入桌面。
  9. 进入系统后,第一时间去“设置-账户-登录选项”给账户设置一个新密码,别让账户继续处于空密码状态。

整个过程最麻烦的其实是第一步到第三步,后面几乎都是自动的。

3.3 我把工具界面设计成“傻瓜式”的原因

写工具的时候,我特意把交互做成最简单的菜单式,而不是命令行式,原因很简单:面对“密码忘记”这个场景的人,往往不是技术高手,可能是家里长辈、同学、同事,他们在那种焦急状态下再面对一串命令行,只会更慌。菜单式界面加上大字体提示,能让任何人照着屏幕选来选去就完成操作。同时,菜单式交互也降低了误操作风险,任何人都不会因为多敲一个字符引发不可逆的破坏。

3.4 最容易翻车的地方其实不在工具本身

工具本身的逻辑跑了很多次都没出问题,真正的坑都在外围环境。我列几个最常见的:

  • UEFI 和 Legacy 启动模式不匹配。有些老电脑默认 Legacy(传统 BIOS)模式,而有些工具镜像默认按 UEFI 引导,导致插上 U 盘后启动项里看不到它。解决办法:进 BIOS 看Boot Mode,把模式切换成对应选项,或者在 CSM 兼容模式下再试。
  • NVMe 固态硬盘驱动缺失。如果目标是新电脑,系统装在 NVMe 固态里,而启动环境缺少 NVMe 驱动,挂载硬盘时会找不到分区。我后来在镜像里预置了通用 NVMe 驱动,才解决了新机兼容问题。
  • 多硬盘多系统。机器上装了多块硬盘、多个 Windows,工具自动识别时可能选错系统分区。遇到这种情况,我的建议是在选择分区时先看容量和启动标识,别只看盘符就确定。

4. 实测记录:老笔记本、新台式机、虚拟机三种典型环境

4.1 老笔记本电脑:Legacy BIOS + 机械硬盘

最早测试是在一台十年前的老笔记本上做的,配置是传统 BIOS + 机械硬盘。第一次跑的时候工具能正常引导,但扫描分区特别慢,而且一度识别不到硬盘。排查后发现是硬盘的 SATA 控制器被设成了兼容模式,后来在 BIOS 里把 SATA 模式从 IDE 切到 AHCI,工具才正常挂载系统盘。整个流程耗时约 50 秒,比新机器慢不少,主要慢在机械硬盘的扫描和 NTFS 挂载上。密码清除本身仍是秒级完成,重启后直接进系统,资料完好。

4.2 新台式机:UEFI + NVMe 固态 + Secure Boot 开启

第二次测试是朋友的一台较新台式机,系统装在 NVMe 固态里,出厂默认开启 Secure Boot,预装的是 Windows 11。第一次插上 U 盘,启动菜单里能看到引导项,但选完直接提示安全校验失败。把 Secure Boot 临时关闭后重启,再次选中 U 盘引导,顺利进入工具界面。因为系统盘没有启用全盘加密,工具读到的 SAM 是明文状态的,直接选账户、清除、重启,整个流程 20 秒不到。这里要强调的是:清完密码后记得回去把 Secure Boot 重新打开。

4.3 虚拟机:拿来调工具开发最省事

开发阶段我其实主要用虚拟机跑测试,不占用实体机,而且可以随时回滚快照。虚拟机里可以模拟 UEFI 引导、模拟多分区,也能挂载虚拟磁盘直接检查修改后的 SAM 是否正常。虽然虚拟机环境少了硬件驱动的变数,但胜在开发效率高、调试方便。等你把自己的工具在里面跑通了,再到实体机验证兼容性就行。

4.4 几组数据与规律

环境引导方式是否需要关 Secure Boot从选中 U 盘到清完结果
老笔记本(机械盘)Legacy BIOS不需要约 45-60 秒成功
新台式机(NVMe 固态)UEFI需要约 10-15 秒成功
虚拟机(模拟 UEFI)UEFI可不关约 10 秒成功

测试下来我发现,启动方式不匹配才是最高频的失败原因,其次才是 Secure Boot 拦截。工具内在逻辑几乎没出过问题。

5. 翻车预警:全盘加密、安全引导、固件锁这些情况别硬来

5.1 全盘加密是最大的变数

这是所有情况里最需要警惕的一点。如果你的 Windows 开启了系统自带的整盘加密功能,而且密钥被绑定在 TPM 芯片上,那么外部工具看到的硬盘内容是密文,不是明文。这时候你尝试去修改 SAM,看到的是加密后的垃圾数据,改了没有任何效果,甚至可能破坏加密卷的完整性。遇到这种情况,唯一正确的路径是先通过你保存的恢复密钥解锁磁盘,或者提前在 Windows 设置里关闭该加密功能,然后再做密码清除。所以在动手清密码之前,先想清楚这台机器到底有没有开全盘加密。别等到工具显示找不到 SAM 时才意识到问题。

5.2 Secure Boot 与驱动签名

前面实测里已经演示过 Secure Boot 的影响。简单说:定制微系统如果没有正确的引导签名,Secure Boot 会拒绝执行它。我的建议是一律先临时关闭 Secure Boot,操作完成后再打开。另外,有些新主板已经取消 CSM 兼容模块,老式 Legacy 引导的 U 盘插上去连启动项都看不到。这时候你需要确保工具镜像本身支持 UEFI 引导,我做的时候就特意做了双模式支持。

5.3 企业管理策略和硬件级密码不是这套工具能解决的

如果电脑是单位发的办公设备,账户走的是企业域账号或设备管理方案,那密码策略可能完全不在本地 SAM 控制范围内,清掉本地哈希也没用。还有一类情况是 BIOS 固件密码本身忘了,那是硬件层级的锁,开机就直接卡在固件自检阶段,U 盘根本没机会引导。这属于另一个话题,需要联系设备制造商或售后处理,不是这套工具能覆盖的范围。

5.4 使用边界:这是给“自己的电脑”用的

再强调一次,这个工具只能用在你自己拥有的设备上,或者经过明确授权需要协助的设备上。用它去搞别人的电脑,不管初衷是什么,都可能触碰法律边界和他人隐私。工具永远没有立场,用的人心里得有红线。我把工具免费放出来,帮助的是那些被自己密码困住的人,而不是给别有用心的人提供方便。

6. 从清密码到扩展工具集:源码骨架和改造思路

6.1 给工具加“重置为指定密码”的功能

清空密码是最直接的方案,但有时候你并不想让账户处于空密码状态,而是想直接把密码改成自己指定的值。这样进系统后就不用再额外设置一次了。实现上需要构造一个合法的 NTLM 哈希值,把这个哈希作为新密码写入 SAM。注意 NTLM 哈希是定长的,直接乱填会破坏哈希字段导致账户状态异常。如果你想让工具支持这个功能,研究重点是如何正确生成并写入定长哈希。

6.2 顺手加上备份和启动修复能力

既然这个微系统能挂载 Windows 分区,那它的能力就不止清密码这一件事。我后来给工具加了两个扩展功能:一个是把 SAM 文件备份出来,万一用户后悔或者操作异常,可以恢复原状;另一个是修复 Windows 引导记录,很多“开不了机”的问题其实是引导坏了,跟密码没关系。这些功能共用一套挂载和分析模块,加起来的成本不高,但对用户的价值却翻倍。

6.3 核心代码骨架(伪代码级)

下面是一个理解工具核心逻辑的骨架示例,我用 Python 风格写伪代码,实际工程实现要考虑注册表数据结构、字节序、偏移量等细节:

# 核心流程:加载 SAM -> 枚举用户 -> 清除哈希 -> 写回 def process_system_drive(drive_path): # 1. 挂载系统分区 mount_point = mount_ntfs(drive_path) sam_file = mount_point + "/Windows/System32/config/SAM" # 2. 加载 SAM hive hive = open_sam_hive(sam_file) # 3. 枚举本地账户 users = hive.enumerate_users() # 返回用户名 + RID # 4. 清除指定账户的密码哈希 for user in users: if user.rid == selected_rid: user.clear_password_hash() # 5. 卸载 hive,确保数据持久化 hive.flush() unmount_ntfs(mount_point)

代码逻辑不复杂,难的是底层文件格式的处理和兼容性测试,这部分需要大量真实系统的验证。

6.4 为什么免费开放,以及获取时要注意什么

我做这个工具的起因很简单:身边隔三差五就有人忘密码,我自己也忘过。后来发现它其实能帮到更多人,就直接开源了。免费意味着没有商业售后,也意味着任何人都能审计代码,不存在隐藏后门的空间。你可以从托管平台搜索相关关键词找到项目,下载后先比对发布页面给出的校验值,确保镜像没被篡改。拿到手先在自己不重要的旧电脑或虚拟机里试一遍,确认明白了再应对正式场景。

最后分享几点实际使用中的体会。清完密码第一次进系统后,别急着干别的,先创建一个新密码并确认密码策略正常。启动 U 盘最好单独保存好,别随手乱插;它就像一个备用钥匙,放在可靠的地方关键时刻才有意义。如果你平时怕忘密码,建议提前做一个密码重置盘或者定期把重要资料备份到云盘,比啥时候都等到“最后一刻”再折腾稳妥得多。工具再方便,也只是应急的路子,真正省心的习惯还是靠谱的备份与密码管理。

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

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

立即咨询