WinHello故障解决

Windows Hello / PIN 锁死导致无法密码登录的完整排障记录

——一次微软安全策略BUG导致无法登录的恢复实录

全文由我撰写草稿并由ChatGPT优化排版


一、问题起点

背景:
SP8由于电池衰减,在保修期结束之前,申请了一次质保,正常来讲MS会直接给换一台官翻机,硬盘不返还,在换新之前我把自己的1TB SSD拆下,换回了原装256硬盘,计划在换新之后装回硬盘继续使用。

质保流程完成后,收到新机,换回我的1TB SSD,问题发生了,由于硬件发生变化,设备不再被信任,输入PIN登录要求重置PIN,但无法重置和登录……

设备:Surface Pro8

系统:Windows(Microsoft 账户)

用户结构:

  • Administrator(本地内置管理员,禁用状态)
  • admin(日常主用的Microsoft 账户,目标用户,无法登录

核心异常现象

admin 用户上:

  • 登录页 只显示

    • Windows Hello 人脸

    • PIN

  • 由于我日常使用启用了Win Hello,所以完全没有“密码登录”入口

  • 登录行为表现:

    • 人脸识别成功 → 闪一下 → 回到登录页

    • PIN 提示需要重置 / 新建 → 点击后 转圈,无窗口、无报错

  • 安全模式:

    • 仍然要求 PIN,不给密码框

结论(当时尚未完全确认):

登录 UI 已被 Windows Hello 绑定
但 Hello 自身组件已经不可用
→ 形成死锁态

所以我的目的就是,移除Win hello或直接暴露密码框,登录回原系统。


二、第一阶段:确认「不是简单权限 / UI 问题」

1. 通过 PE 获取登录页 NT 权限 Shell,验证是否为 UI 层受限

首先进入 PE 环境,通过常规方式:

  • 使用 cmd 替换无障碍程序utilman获取提权cmd

  • Windows 登录页 点击无障碍拉起 NT AUTHORITY\SYSTEM 权限的 cmd

如果是MS账号关联导致的普通用户权限不足 / UI 被策略隐藏,
那么在 NT 权限 下应当可以直接解除。


2. 在 NT 权限 Shell 中修改组策略,尝试暴露密码登录入口(失败)

在登录页的 NT 权限 cmd 中:

  • 直接启动 gpedit.msc

  • 修改以下策略:

2.1 暴露用户切换入口

  • 计算机配置 → 管理模板 → 系统 → 登录


  • “隐藏快速用户切换的入口”
    设置为 “已禁用”

明确暴露“切换用户”,排除“当前登录上下文被强制绑定”的可能


2.2 禁用 Windows Hello / PIN 强制策略

在同一策略树下,执行:

  • 禁用 Windows Hello

  • 禁用 “仅允许使用 PIN 登录”(其实记不清名字了,是这个作用的策略)

完成后重启。

结果:
  • 登录页状态 完全无变化

  • 目标用户 admin

    • 仍然只有 Windows Hello / PIN

    • 无密码输入框

结论:

即使在 NT 权限下修改本地组策略,
也无法改变 admin 用户的登录方式

→ 登录方式已不在 UI / GPO 层控制


三、第二阶段:尝试从 Administrator 用户侧进行干预

1. 在 NT 权限 Shell 中启用内置 Administrator(遇到权限差异)

思路转变:

既然目标用户 admin 已被锁死,
那么先进入 Administrator,再进行修改。


1.1 尝试使用 net user 启用 Administrator(失败)

NT 权限 cmd 中执行:

1
2
net user administrator /active:yes 
net user administrator

结果:

  • Active 状态仍显示 No

  • 命令未报错,但未生效

说明:

即便是 SYSTEM / NT 权限 cmd,
在该环境下 net user 行为受限


1.2 使用 PowerShell 成功启用 Administrator

切换至 PowerShell,执行:

Enable-LocalUser -Name "Administrator"

结果:

  • Administrator 成功启用

  • 可在登录页切换并进入系统


四、第三阶段:在 Administrator 下直接修改目标用户(失败)

1. 使用 net user 修改 admin(失败,8646)

进入 Administrator 桌面后,尝试:
net user admin *

结果:

  • 返回错误 8646

  • 提示无权限 / 操作不允许

回到 登录页 NT Shell 再次尝试:

  • 同样失败

结论非常明确:

adminMicrosoft 账户

  • 不受 net user 管理

  • 不受 Administrator / NT 权限直接控制


2. 注册表层面针对 SID / LogonUI 的修改(仅对 Administrator 生效)

接下来尝试的方向是:

  • 定位 admin 的 SID

  • 修改:

    • Authentication

    • LogonUI

    • Credential Provider 相关键值

  • 目标是强制暴露密码登录框

结果:

  • Administrator 用户

    • Windows Hello / PIN 可以被成功关闭

    • 密码登录可见、可用

  • 目标用户 admin

    • 完全无变化

    • 仍为 Hello / PIN 页面

结论:

目标用户的登录链路 不属于常规注册表控制路径**


五、第四阶段:参考社区方案,尝试 WinRE 下对目标用户操作(失败)

1. 尝试社区方案《在使用 PIN 登录不可用时开启密码登录》

参考帖子:
https://bbs.pcbeta.com/viewthread-2047506-1-1.html

按照该方案实施:

  • 进入 WinRE CMD

  • 在登录页选择目标用户(admin)

  • 输入 Microsoft 账户密码

  • 加载 SOFTWARE Hive 并修改


实际执行结果:

  • 成功进入 WinRE CMD

  • 选择目标用户 admin

  • 尝试加载 SOFTWARE Hive 时:

    • 提示 文件被占用
  • 尝试通过非常规方式提权 / 解除占用:

    • 仍被占用

结论:

即使进入 WinRE,
MSA 用户相关 Hive 在该阶段仍被锁定


六、第五阶段:清除 PIN 数据(失败)

1. 删除 NGC 目录,验证是否为 PIN 数据阻塞

回到登录页的 NT 权限 Shell,删除如下文件:

C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc

结果:

  • PIN 被清空

  • 目标用户登录页变为:

    “需要创建 PIN”

但:

  • 点击“创建 PIN”

  • 仍然 转圈

  • 无窗口、无报错

结论:

NGC 只是 PIN 数据
不是登录方式选择权本身


七、第六阶段:放弃“暴露密码框”,改为“绕过登录选择”(失败)

1. 多次修改 HKLM 下注册表,确认无效

此后尝试:

  • 多个 HKLM 下与登录、认证、Hello 相关的键

  • 均对 admin 用户不生效

此时可以确认:

继续尝试“让系统给密码框”是死路


八、最终方案:AutoAdminLogon 绕过登录选择(成功)

1. 思路转变(关键)

不再尝试:

  • 暴露密码框

  • 修复 Hello

  • 干预 Credential Provider

而是:

让 Winlogon 直接完成登录


2. 通过注册表配置 AutoAdminLogon

Administrator 下:

路径:

**HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon**

配置:

键名 类型
AutoAdminLogon 字符串值 1
DefaultUserName 字符串值 admin(目标用户名)
DefaultPassword 字符串值 明文密码

重启。


3. 结果

  • 系统 直接登录 admin

  • 完全绕过:

    • Windows Hello

    • PIN

    • 登录 UI

  • 用户态完整、数据未受损


九、后续验证

  • 成功进入系统后:

    • 手动重新创建 PIN

    • 重新配置人脸识别

    • 删除修改和新建的注册表条目

  • 重启复测:

    • 登录正常

    • Hello / PIN 功能恢复可用


十、问题定性与结论

本次问题并非权限、策略或配置错误,而更可能是 Microsoft 账户(MSA)与 Windows Hello 在 PIN 重置流程中的实现缺陷

在目标用户 admin 上,点击 重置 / 修改 PIN 时,系统未拉起 Microsoft 账户验证弹窗,但登录状态已被推进至 “仅允许通过 Windows Hello 登录”。由此形成死锁:

系统要求使用 Hello → Hello 又依赖 PIN / MSA 验证 →
验证流程未被调用 → 登录无法继续,也无法回退到密码。

在该状态下:

  • Password Credential Provider 不再被枚举

  • 组策略、注册表、WinRE、NT 权限修改均对目标用户无效

  • 网上常见“恢复密码登录”的通用方案不再适用

值得讽刺的是,微软的这类安全设置并未真正阻止任何具备技术能力的访问行为:在整个过程中,我可以通过完整的渗透测试手段获取系统内全部数据,却唯独无法以“合法用户”的身份进入自己的桌面进行正常使用。

最终解决方式并非“暴露密码框”,而是绕过登录选择流程本身

通过 AutoAdminLogon 直接由 Winlogon 使用明确凭据完成登录,避开已进入死锁态的 Windows Hello 登录链路。

这是在不破坏用户态数据前提下,唯一可控且可逆的解法


十一、尾声

这篇blog写下,也希望能帮助到像我一样,被微软的各式各样bug坑害的用户,把我全部的错误尝试写下,也是希望能帮助其他人避免一些错误操作或从中发现更有效的解法。

最后回到那句经典的话:你可能是正版软件的受害者。


WinHello故障解决
http://example.com/2026/01/17/20260117-winlogontroubleshooting/
作者
Caleb
发布于
2026年1月17日
许可协议