怎样使用 Chntpw 和 Linux Live CD 重置 Windows 密码

本分步指南解释了 什么是 Chntpw 实用程序以及怎样使用 使用带有 Linux Live CD 的 Chntpw 重置 Windows 密码.

介绍

让我们说你是系统 admin 在混合操作系统环境中工作的人,您同时管理 Linux 和 Windows 系统。 在某些时候,您可能需要恢复忘记的用户帐户密码。

如果是 Linux 或 Unix 用户帐户,您可以简单地 启动到救援或紧急模式,并重置忘记的用户帐户密码。 我们已经记录了在 Linux 和 Unix 操作系统中重置忘记的 Root 密码的步骤。 检查以下链接以获取更多详细信息。

  • 怎样在 CentOS 8、RHEL 8、AlmaLinux 8、Rocky Linux 8 中重置 Root 用户密码
  • 怎样在 Ubuntu 22.04 / 20.04 LTS 中重置 Sudo 密码
  • 怎样在 Arch Linux、CentOS 和 Ubuntu 中重置 Root 用户密码
  • 怎样在 FreeBSD 中重置或恢复 Root 用户密码

在我看来,重置 Linux 用户密码非常容易! 我们从 Grub 启动菜单启动到单用户模式,以读/写模式挂载文件系统并使用 passwd 命令来改变 root 或任何普通用户密码。 如果 Grub 菜单受密码保护,您可以通过 Linux cd 启动并按照相同的过程重置 Linux 用户帐户密码。

还可以通过 Linux live CD 或任何其他基于 Linux 的救援 CD 恢复忘记的 Windows 管理员密码,例如 example 系统救援 或者 克隆尼拉.

在本指南中,我将向您展示怎样使用 Chntpw 实用程序和 Ubuntu live cd 重置 Windows 用户密码。 不只是 ubuntu live CD,您可以使用任何其他 Linux live CD 或系统救援 CD 或 Hiren 的 BootCD。

我在 Windows 8 和 Windows 10 平台上测试了本指南。 在这两个平台上,我都可以使用 Chntpw 实用程序成功更改 Windows 用户密码。

在开始之前,让我简单介绍一下 Chntpw 实用程序。

什么是 Chntpw?

中华网 是一个实用程序,用于查看 Microsoft Windows 操作系统使用的 Windows NT/2000 SAM 用户数据库文件中的一些信息和重置用户密码,特别是在 NT3.x 和更高版本中。

SAM 用户数据库文件通常位于 WINDOWSsystem32configSAM 在 Windows 文件系统上。

此外,Chntpw 包含一个简单的注册表编辑器和一个十六进制编辑器,可以浏览和修改注册表文件中包含的信息。

Chntpw 实用程序随所有 Linux ISO 映像一起提供。 只需连接到 Internet 并安装 Chntpw 实用程序。 如果您使用 Clonezilla 或 SystemRescue CD,它们默认包含 Chntpw,因此您不必费心手动安装。

Chntpw 支持以下选项:

  • -h : 查看选项摘要
  • -u 用户名:要更改的用户名或用户 ID。 默认用户是“管理员”。
  • -l :列出 SAM 数据库中的所有用户。
  • -i :打开交互式菜单系统。
  • -e :打开注册表编辑器。
  • -d :打开十六进制编辑器
  • -E:启用安全模式。
  • -v :打印详细信息。 调试时很有用。

在 Windows 中禁用快速启动

在重置 Windows 密码之前,必须在 Windows 系统中关闭快速启动。 如果不禁用快速启动,在 Linux 中挂载 Windows 分区时会遇到如下错误。

The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Falling back to read-only mount because the NTFS partition is in an unsafe state. Please resume and shutdown Windows fully.

要在 Windows 10 中禁用快速启动,请打开 控制面板 -> 硬件和声音 选项。

单击硬件和声音选项

接下来,单击 “电源选项”.

单击电源选项

在下一个窗口中,单击 “选择电源按钮的作用” 左侧边栏上的选项。

选择电源按钮的功能选项选择电源按钮的功能选项

在“定义电源按钮并打开密码保护”部分下,您将看到一个标题为 “更改当前不可用的设置”. 点击它。

更改当前不可用的设置更改当前不可用的设置

取消选中“启用快速启动”复选框以禁用快速启动,然后单击 Save 设置。

取消选中打开快速启动框取消选中打开快速启动框

现在,快速启动已被禁用。 关闭控制面板应用程序。

使用 Chtntpw 和 Linux Live CD 重置 Windows 用户帐户密码

步骤1 – 使用 Linux Live CD 启动您的 Windows 系统

使用任何可用的 Linux live cd 映像启动您的 Windows 系统。 出于本指南的目的,我将使用 Ubuntu 现场光盘.

Ubuntu 现场光盘Ubuntu 现场光盘

第2步 – 安装 Chntpw 实用程序

启动到实时环境后,请确保您已连接到 Internet,并且 安装 Chntpw 程序。

在基于 Ubuntu 的系统中, 使能够 [Universe] 存储库 并使用以下命令安装 Chntpw 实用程序:

$ sudo apt install chntpw

如果您启动到基于 RPM 的系统,例如 Fedora,您可以使用以下命令安装 Chntpw:

$ sudo dnf install chntpw

第 3 步 – 找到 Windows 安装分区

现在,我们需要找出 Windows 操作系统安装在哪个分区上。 要查找 Windows 安装分区,您可以使用任何磁盘管理 CLI 实用程序,例如 fdisk 或者 sfdisk.

$ sudo sfdisk -l

样本输出:

[...]
Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   1026047   1024000  500M  7 HPFS/NTFS/exFAT
/dev/sda2       1026048 104855551 103829504 49.5G  7 HPFS/NTFS/exFAT
[...]
列出磁盘分区列出磁盘分区

正如您在上面的输出中看到的,我的 Windows 10 操作系统安装在 /dev/sda2 分割。 换句话说,/dev/sda2 是 C: 驾驶。 和 /dev/sda1 是包含加载 Windows 所需的重要硬件特定文件的系统分区。

第 4 步 – 挂载 Windows 分区

找到安装 Windows 操作系统的正确分区后,您需要将其挂载到您的 Linux 平台中。

让我创建一个名为 winmount 在我的 $HOME 目录。

$ mkdir ~/winmount

在新创建的挂载点中挂载 Windows 分区(在我的例子中是 /dev/sda2) ~/winmount 使用 mount 命令:

$ sudo mount /dev/sda2 ~/winmount
挂载 Windows 分区挂载 Windows 分区

请注意,您必须关闭 Windows 操作系统中的“快速启动”功能。 否则,您将看到一条错误消息,显示“NTFS 分区处于不安全状态” 并且分区将以只读模式挂载。

当 Windows 分区以只读模式挂载时,您无法对分区进行任何更改,因此无法重置 Windows 密码。

小心: 在上述 example, 我用过 'sudo' 挂载分区时的命令。 如果您将 windows 分区挂载在 $HOME 目录,你不需要使用 'sudo'. 我已经包括了’sudo’ 只是为了清楚起见,因为有些用户可能会尝试将分区挂载到目录中(例如 /mnt/) 这需要 ‘sudo’权利。

第 5 步 – 删除 Windows 用户密码

我们已将 Windows 分区安装在 ~/winmount 目录。

改成 /Windows/System32/config/ 目录:

$ cd ~/winmount/Windows/System32/config/

现在,使用编辑 SAM 数据库 chntpw 通过运行以下命令实用程序:

$ sudo chntpw -i SAM

它将打开 chntpw 交互式主向导。 类型 1 选择 “编辑用户数据和密码” 选项并按 ENTER。

chntpw version 1.00 140201, (c) Petter N Hagen
Hive <SAM> name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 65536 [10000] bytes, containing 5 pages (+ 1 headerpage)
Used for data: 289/25456 blocks/bytes, unused: 26/7152 blocks/bytes.

<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] -> 1
[...]
使用 chntpw 编辑用户数据和密码使用 chntpw 编辑用户数据和密码

Enter 用户编号 (RID)。 就我而言,我将重置名为的用户的密码 “森蒂尔库玛”,所以我输入了他的 RID 即 3e9.

[...]
===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrator                  | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |
| 03e9 | Senthilkumar                   | ADMIN  |          |

Please enter user number (RID) or 0 to exit: [3e9] 3e9
[...]
Enter  用户编号 (RID)Enter 用户编号 (RID)

Enter 1 清除用户密码并按 ENTER。

[...]
================= USER EDIT ====================

RID     : 1001 [03e9]
Username: Senthilkumar
fullname: 
comment : 
homedir : 

00000220 = Administrators (which has 2 members)

Account bits: 0x0214 =
[ ] Disabled        | [ ] Homedir req.    | [X] Passwd not req. | 
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     | 
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   | 
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  | 
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  | 

Failed login count: 0, while max tries is: 0
Total  login count: 9

- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > 1
[...]
使用 Chntpw 清除用户密码使用 Chntpw 清除用户密码

下一个类型 q 并按 ENTER 退出编辑用户并返回上一个菜单。

[...]
- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > q
[...]
退出编辑用户退出编辑用户

同样,键入 q 退出 chntpw 交互式菜单:

[...]
<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] -> q
[...]
退出 chntpw 主交互菜单退出 chntpw 主交互菜单

系统将提示您保存更改。 类型 是的 并按 ENTER 保存更改并退出 chntpw 交互式菜单。

[...]
Hives that have changed:
 #  Name
 0  <SAM>
Write hive files? (y/n) [n] : y
Save  变化和 Exit chntpwSave 变化和 Exit chntpw

而已。 Windows 用户密码已重置!!

删除您的 Ubuntu live cd 并重新启动您的系统。 现在您将不会在 Windows 登录屏幕上看到用户密码提示。

以下屏幕截图显示了在 Windows 10 中删除用户密码之前的 Windows 密码提示。

Windows 10 登录密码提示Windows 10 登录密码提示

在 Windows 10 中删除用户密码后,用户会自动登录。

Windows 10 登录屏幕Windows 10 登录屏幕

此过程与重置 Windows 8 用户密码相同。 正如我已经说过的,您可以使用任何 Linux live CD 或 System Rescue CD 来重置 Windows 用户密码。

经常问的问题

如果 Windows 分区被加密,是否可以重置用户密码?

不可以。如果 Windows 分区已加密,则无法挂载它。 因此,无法使用 Chntpw 在加密驱动器中重置 Windows 密码。

我应该安装 Chntpw 吗?

这取决于您使用的 Linux CD。 如果您使用 Clonezilla、SystemRescue 或 PartedMagic 等系统救援 cd,则默认情况下已包含 Chntpw。 因此,您不必在系统救援 CD 中安装 Chntpw。 在普通的 live CD 中,例如 Ubuntu live cd 或 Fedora live cd,你可能需要安装 Chntpw。

我始终建议您至少准备一张系统救援 CD。 当事情进展顺利时,它肯定会派上用场。

重置密码后,用户是否仍会连接到域?

不可以。一旦密码被清除,用户将与域控制器断开连接。 您可能需要重新对其进行身份验证。 或联系您的域管理员。

结论

在本教程中,我们学习了怎样使用 Chntpw 实用程序重置忘记的 Windows 用户帐户密码。 如您所见,使用 Chntpw 和 Linux live CD 重置 Windows 密码的步骤很简单!

相关阅读:

  • 怎样从 Windows 10,11 访问 Linux 分区