ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows PIN不可用:TPM与BitLocker排查修复指南

Windows PIN不可用:TPM与BitLocker排查修复指南

PIN 突然不可用这件事,第一次遇到的人基本都会愣住:昨天还好好的,重启一次就提示"你的 PIN 已不可用,因为此设备上的安全设置已更改",登录选项里只剩一个 PIN 输入框,连切换密码的入口都找不到。我在帮人处理这类问题时见过太多类似的现场——有的是刚做完系统更新,有的是换了主板或者清了 CMOS,有的是装了某个驱动之后 TPM 状态异常,还有的纯粹是把小键盘的 NumLock 关着硬敲了半小时。这篇内容就是把这几年处理 Windows PIN 登录故障的完整思路摊开讲:五种修复路径分别适用于什么故障域、动手之前必须先确认哪些前提、报错提示语怎么翻译成具体操作,以及那些让我白折腾过的细节。适合自己就是设备持有人、需要恢复对自己电脑访问权的读者,也适合日常要给同事朋友处理电脑问题的运维和 IT 支持岗位。文中涉及的所有操作都建立在"这是你自己的设备、你对账户有合法所有权"这个前提上,这一点请先确认,再往下看。

1. PIN 失效到底坏在哪:先把故障域缩到最小

1.1 PIN 不是密码,它是被 TPM 封起来的一把钥匙

很多人下意识把 PIN 当成"四位数的开机密码",所以第一反应是"密码错了重新设一个不就行了"。这个理解偏差会直接导致后面所有排查方向跑偏。Windows Hello PIN 的本质是一对非对称密钥:私钥由 TPM(受信任的平台模块,主板上那颗独立安全芯片,或者固件模拟的 fTPM)生成并密封存储,公钥交给你要登录的系统做验证。你敲的那几位数字只是解锁这把私钥的口令,它本身不参与网络传输,也不存在"服务器那边存着你的 PIN"这种事。

这就解释了一个高频现象:改完 Microsoft 账户的在线密码之后,PIN 反而不能用了。因为账户密码变更会触发凭据重新绑定,本地那份被密封的容器就和新状态对不上了,系统出于安全的默认动作是把这个容器作废,要求你重新建立。同理,更换主板、升级 BIOS 固件、清空 CMOS、重刷 TPM 固件、乃至某些深度系统更新,只要让 TPM 的度量值发生变化,密封就失效了,这就是那句"因为此设备上的安全设置已更改"的由来。

所以排查的第一步不是急着点"我忘记了我的 PIN",而是先判断三件事:设备还能不能正常进入系统(哪怕是安全模式)、账户是本地账户还是绑定了在线账户、以及这台机器上有没有开 BitLocker。这三条决定了你后面能走哪条路,尤其是第三条,用血换来的教训,后面第 4 章会专门讲。

1.2 三类故障,对应完全不同的处理方向

把现象归归类,能省掉一大半无效尝试。我一般按下面这个表快速分流:

故障类型典型表现本质原因首选方向
输入层故障报"PIN 不正确",但确定没敲错键盘布局、小键盘、输入法、脏键换输入方式验证
凭据容器损坏"PIN 不再可用,因为安全设置已更改"Ngc 容器与 TPM 脱钩重建容器
安全策略阻断登录界面只有 PIN 没有密码,或提示"你的组织要求…"组策略/注册表强制 Hello 登录策略调整
账户层故障改密后 PIN 失效、账户状态异常在线凭据与本地不同步在线验证重置

这四类里,第一类最容易被低估。我见过一位同事,笔记本外接了一把 87 键键盘,那键盘没有独立小键盘区,而系统记住的是全键盘布局,NumLock 状态不对,敲数字进去实际输出的是方向键,屏幕上那一排圆点看着像是在正常输入,其实全是空。换回笔记本自带键盘就好了。所以第一条永远是:换个键盘、开屏幕键盘、或者用"登录选项"里的其他方式先验证一下账户本身是不是好的。

第二类和第三类的界限有时候会糊在一起——容器坏了你想重建,结果发现登录界面根本不给你密码选项,这时候就得先解决策略问题。这也是我建议动手顺序从"破坏性最小"往"破坏性最大"排的原因:先试不改配置的,再试改配置的,最后才动 TPM 和账户体系。

1.3 动手前必须确认的三个前提

在开始第 2 章的五种方法之前,有三件事必须先落地,否则可能在半路把自己锁死在外面。

第一,确认你能提供账户所有权证明。绑定在线账户的机器,重置 PIN 需要联网并验证账户(短信、邮箱验证码或者验证器应用),这一步绕不过去,也没必要绕。如果你连账户的验证方式都失效了,那正确的路径是先走账户找回流程,而不是在本地折腾 PIN。

第二,确认 BitLocker 的恢复密钥在哪里。打开另一台设备,登录对应的账户管理页面,确认恢复密钥是否已经备份到账户里,或者你手里有没有打印出来的纸质备份。TPM 一旦被清除,BitLocker 的保护器就会失效,下次启动直接进恢复界面要 48 位密钥。没有密钥,数据就真的拿不回来了,这不是危言耸听。

第三,准备好一个能上网的第二设备。整个修复过程中你会频繁需要查验证码、查恢复密钥、查错误码含义,别指望靠那台进不去的机器。

提示:如果你完全不确定自己有没有开 BitLocker,先别做任何涉及 TPM、BIOS、系统重置的操作。想尽办法先进系统(安全模式也行),在里面查清楚状态再动手。

2. 五种修复路径:按破坏性从小到大排

这五种方法不是并列的选项,而是有明确先后顺序的递进关系。我按"动了什么"来排序:方法一不动任何配置,方法二只删凭据缓存,方法三动 TPM,方法四动系统策略,方法五动账户体系。能停在前一步就别往后走。

2.1 方法一:用安全模式把 PIN 换掉

适用场景:系统本身能正常启动,只是登录界面卡住;或者你怀疑是某个驱动、某个更新把 Hello 的验证链路搞乱了。

操作路径是:在登录界面按住 Shift 不放,同时点击右下角电源图标里的"重启",一直按住直到出现蓝色背景的"请稍候"再松手。进入"选择一个选项"后,依次走"疑难解答 → 高级选项 → 启动设置 → 重启",重启后按数字键选择安全模式。

安全模式的意义在于,这个环境下 Windows Hello 的面部、指纹、PIN 全部被禁用,系统会退回用账户密码验证。你只要能想起账户密码,进去之后再从"设置 → 账户 → 登录选项"里重新设置一个 PIN,通常就能恢复。这条路我成功率最高的一次,是一台装了某款输入法安全组件的机器——那组件挂了个筛选器驱动,把 Hello 的输入通道拦了,安全模式下不加载它,一切正常。

如果安全模式都进不去,说明问题不在 Hello 层而在更底层,直接跳到方法五考虑重置或在方法三里查 TPM。还有个小细节:安全模式下有些机器会提示"此选项需要联网",那是因为你选的是"带网络的安全模式"但驱动没加载好,换成普通安全模式即可。

2.2 方法二:清掉 Ngc 容器,让系统重建凭据

适用场景:提示"你的 PIN 不再可用,因为此设备上的安全设置已更改",而且你还能用密码或者别的管理员账户进入系统。

Windows 把 PIN 相关的凭据容器放在一个隐藏目录里,路径是:

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

这个目录默认连管理员都不一定有完全控制权限,直接删会提示"你需要来自 SYSTEM 的权限"。正确做法是先用管理员身份打开命令提示符,做三件事:停止相关服务、取得所有权、清空内容。

:: 以管理员身份运行 net stop NgcSvc net stop NgcCtnrSvc takeown /f "C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc" /r /d y icacls "C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc" /grant administrators:F /t :: 备份一份再删,方便出问题时回滚 robocopy "C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc" "%USERPROFILE%\Desktop\Ngc_bak" /E /COPYALL rd /s /q "C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc"

删完之后重启,进系统后到"设置 → 账户 → 登录选项"里重新添加 PIN,系统会自动生成新的容器。这里有个容易忽略的点:Ngc目录下一般有一到多个以 GUID 命名的子文件夹,每个对应用户的一个容器。如果你是多用户机器,删之前记一下哪个是当前账户的(看修改时间和大小),只删对应的那个更保险,全删的话其他用户的 PIN 也会一起失效,虽然不影响数据但会挨骂。

备份那一步不是为了好看。我确实遇到过一次删完重建失败的情况,系统反复提示"无法设置 PIN,请稍后重试",最后是把备份拷回去、再重新走了一遍流程才恢复的。所以别嫌麻烦。

2.3 方法三:TPM 状态检查与清除,慎之又慎

适用场景:方法二无效,并且事件日志里能看到 0x80090016 这类与密钥集相关的错误码;或者你刚换过主板、刷过固件。

先用Win + R输入tpm.msc打开 TPM 管理控制台,看三个信息:状态是否显示"TPM 已准备好,可以使用"、规范版本是 1.2 还是 2.0、以及所有者信息是否为空。状态显示"TPM 未就绪"或者规范版本是 1.2,那 PIN 失效几乎是必然的——Windows Hello 需要 TPM 2.0,1.2 的芯片只能退化使用,稳定性很差。

确认没问题但还是报错,可以在设备管理器里把"安全设备 → 受信任的平台模块 2.0"卸载后扫描硬件改动重新识别,这一步相当于给 TPM 驱动做一次软重启,比直接清除温和得多。做完重启,再试方法二。

只有在前面都无效时,才考虑清除 TPM。tpm.msc里点"清除 TPM",或者在 BIOS/UEFI 里找 Security 页面的 "Clear TPM" 选项。清除的动作本质上是把 TPM 里所有密封的密钥全部丢弃,包括 BitLocker 的保护器、包括指纹模板、包括所有账户的 PIN。

注意:清除 TPM 之前,BitLocker 必须处于挂起(suspend)状态或者已经关闭。挂起的命令是manage-bde -protectors -disable C: -rebootcount 2,这样做会让接下来两次重启不需要密钥,给你留出重新配置的窗口。不做这一步直接清 TPM,下次开机就是恢复密钥输入界面。

清除完成之后,系统会引导你重新设置 PIN,同时需要用账户密码登录一次。功能正常之后,别忘了把 BitLocker 重新启用:manage-bde -protectors -enable C:,并且确认新的恢复密钥已经备份出去。这一步特别容易忘记,我见过有人清了 TPM 之后以为万事大吉,结果 SSD 裸奔了两个月。

2.4 方法四:放开"仅允许 Windows Hello 登录"的策略限制

适用场景:登录界面只有一个 PIN 输入框,"登录选项"里没有密码图标;或者提示语里出现了"你的组织要求你使用 Windows Hello 登录"这类字样。

这条通常是组策略或者注册表被改过。个人机器上出现这种情况,多半是装了什么"系统优化"工具、或者加入过某个域之后又退出来没清干净。检查路径是gpedit.msc→ 计算机配置 → 管理模板 → 系统 → 登录,找到"打开便捷 PIN 登录"这一项,确认它是"未配置"或"已启用"。如果是"已禁用",PIN 功能本身就被关掉了,自然会失效。

家庭版系统没有组策略编辑器,那就走注册表。regedit定位到:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System

检查AllowDomainPINLogon这个 DWORD 值,改成 1 或者直接删掉这一项(删除等于恢复默认)。同一路径下如果还有和 Hello 相关的限制项,一并检查。

改完策略需要重启或者至少注销一次。这里有个现象值得说明:有些机器上策略明明是"未配置",登录界面还是只有 PIN——那是因为系统记住了上一次成功登录的方式,把密码选项折叠了。这时候点一下"登录选项"那个小图标,往往就能看到被藏起来的密码和图片密码。这个坑我在第 4 章还会展开。

2.5 方法五:保住数据的账户级重来

适用场景:前面四条全部无效,或者你连账户密码都想不起来了。

这时候的目标已经从"修复 PIN"变成了"恢复对系统的访问,同时不丢数据"。有两条路,按侵入性排序。

第一条是建立一个新管理员账户。用一个还能用的管理员权限入口(比如域管理员、或者另一个本地管理员账户),在命令行里执行:

net user rescue_temp /add net localgroup administrators rescue_temp /add

重启后用这个临时账户登录,进入系统后先去C:\Users\下把原账户的桌面、文档、下载、以及各种软件配置目录拷出来,然后再决定是修复原账户还是干脆迁移过去。迁移完之后记得把临时账户删掉,或者至少改个强口令,别留着一个叫 rescue_temp 的管理员账户在机器上。

第二条是"重置此电脑",在保留个人文件的前提下重装系统。路径是高级启动里的"疑难解答 → 重置此电脑 → 保留我的文件"。要提前说清楚的是,"保留我的文件"只保证C:\Users下的个人文件还在,装过的软件、注册表配置、环境变量全部清空,工作环境基本要从头搭一遍。而且如果原账户本身登录不了,重置之后原账户目录会变成一堆孤立文件夹,理论上还在但权限不对,需要手动接管才能访问。所以只要还有别的办法,我都不建议直接走这一步。

3. 报错速查表:把那句提示翻译成具体动作

3.1 常见提示语与错误码对照

Windows 在 PIN 这件事上的报错信息写得相当含糊,同一句提示可能对应好几种原因。下面这张表是我这几年攒下来的,按出现频率排的:

提示语 / 错误码大概率原因对应动作
你的 PIN 不再可用,因为此设备上的安全设置已更改TPM 度量值变化、容器与 TPM 脱钩方法二重建容器
0x80090016 密钥集不存在TPM 密钥丢失或被清除方法二 → 方法三
0x80090011 对象未找到容器文件损坏方法二
0x80090010 拒绝访问TPM 被禁用或驱动异常检查 tpm.msc、重装 TPM 驱动
0x80090031 TPM 处于重置中断状态清除 TPM 过程被强行中断进系统后重新完成清除流程
0x801C0003 尝试次数过多连续输错触发锁定等待 2 小时或用密码登录后解锁
0x80070490 找不到元素账户凭据绑定记录缺失在线账户重新验证后重设 PIN
0x80070005 拒绝访问权限不足,操作目录时常见用管理员身份 + takeown
你的组织要求你使用 Windows Hello 登录组策略强制方法四
无法设置 PIN,请稍后重试容器残留、服务未启动停服务 → 清理 → 重启

0x801C0003 这个错误特别值得单说。它出现的时候,很多人第一反应是"我 PIN 没错啊",然后继续猛敲,越敲锁得越久。Windows Hello 的防暴力破解机制在连续失败后会进入递增锁定期,短则几分钟长则两小时。这时候正确的做法是停下来,改用账户密码登录(点"登录选项"切换),进去之后锁定状态会重置。如果连密码都没有,可以用手机或者另一台设备登录账户页面把密码改掉,再用新密码登录——这一步同时也会让 PIN 失效,一举两得。

3.2 用事件查看器定位到具体组件

错误码只是结果,想知道是谁干的,得看日志。eventvwr.msc打开事件查看器,重点看三个位置:

第一个是"应用程序和服务日志 → Microsoft → Windows → HelloForBusiness",这里面记录 PIN 的创建、验证、失效全过程,时间点能精确到秒,配合你的操作时间线非常好对。

第二个是"应用程序和服务日志 → Microsoft → Windows → User Device Registration",涉及账户与设备绑定关系,改密后 PIN 失效的根因经常在这里。

第三个是"Windows 日志 → 系统",筛选来源为 TPM 或者 TPM-WMI 的条目。这里如果出现大量 1026 或者类似的事件,说明 TPM 层面的通信有问题,往上查就是芯片或者固件。

我一般的操作顺序是:先记下故障发生的准确时间,然后在 HelloForBusiness 日志里按这个时间往前翻五分钟,看看有没有一个"凭据删除"或者"容器失效"的事件。有的话直接定位到触发源,比如某个更新包、某次账户同步。没有的话再往系统日志里找 TPM 的痕迹。这套流程比盲试五种方法快得多。

4. 踩坑实录:那些让我白折腾两小时的细节

4.1 登录选项被折叠,误以为密码入口消失了

这个坑我踩过不止一次。登录界面上只有一个 PIN 输入框,下面一行小字"登录选项",很多人根本没注意到那是个可点击的图标。点开之后会展开密码、图片密码、指纹等其他方式。之所以默认折叠,是因为系统认为 PIN 是你最常用的方式,把其余的收起来了,不是被禁用了。

判断方法很简单:如果那行"登录选项"能点开并且里面有密码图标,那就是折叠;如果点开后是空的或者只有 PIN 一项,那才是真的被策略限制了,走方法四。我在电话里帮人处理时,至少有三成的案例卡在这一步——对方坚信"密码选项没了",实际上是没点开那个小图标。

还有个小细节:某些机型在接外接显示器的时候,登录界面的布局会变形,"登录选项"的图标可能被挤到屏幕边缘甚至被裁掉。把外接屏拔了或者调一下分辨率,就能看见。

4.2 域账户、工作账户和个人账户,处理路径完全不同

同样是 PIN 失效,账户类型不一样,能走的路完全不一样。个人账户绑定在线账户,重置 PIN 靠自己验证;而加入域的账户,PIN 策略由域控制器统一下发,本地的组策略修改会被覆盖,清除 TPM 之后可能连重新设置 PIN 的入口都没有,必须由域管理员在服务端重置或者重新下发策略。

工作账户(在"设置 → 账户 → 访问工作或学校"里挂着的那个)更麻烦,它和设备的注册状态绑定,有时候会出现"个人账户 PIN 正常、工作账户登录要求重新验证"的混合状态。这种情况下,正确的动作是先把工作账户断开重连,而不是去删 Ngc 目录——删了之后个人 PIN 也会一起没。

我的经验是:动手之前先去"设置 → 账户"里看一眼账户列表,确认到底是哪一层出了问题。这一步只要三十秒,但能省掉后面半小时的误操作。

4.3 清 TPM 不做 BitLocker 挂起的代价

这个必须单独拎出来讲,因为它造成的损失不可逆。TPM 里存着 BitLocker 的卷主密钥保护器,你一清,保护器就没了,系统在下次启动时检测到密钥不匹配,直接进恢复界面。如果你的恢复密钥备份在账户里而且你能登进去查,那还好;如果备份从来没做过、或者那台机器就是唯一能登录的设备,那就彻底锁死了。

我见过最惨的一次,是一台做了全盘加密的移动工作站,用户为了修 PIN 清了 TPM,然后发现恢复密钥从来没备份过——因为当初启用 BitLocker 的时候,系统提示"已自动备份到你的账户",他就没管,但那台机器当时登录的是另一个账户。最后数据是找回来了,走的是专业数据恢复渠道,代价不小。

所以规矩就是:碰 TPM 之前,先执行manage-bde -status看加密状态,加密中的盘一律先挂起保护器再动手。manage-bde -protectors -disable C: -rebootcount 2这条命令的意思是"接下来两次重启不校验保护器",给你留出操作窗口,用完记得重新启用。这个习惯我从第一次踩坑之后就固定下来了,五年没再出过事。

4.4 那些看似玄学的输入问题

还有一类问题,跟凭据、TPM 一点关系没有,纯纯的输入层故障。

键盘布局错位是最常见的。系统装的是英文布局,你按的是中文输入法的习惯,某些键位输出会变。数字小键盘的 NumLock 状态在登录界面和进入系统后可能不一致,有些主板 BIOS 里有"Boot Up NumLock Status"选项,关掉之后每次开机小键盘都是导航键模式。解决办法要么开机就按一下 NumLock,要么用屏幕键盘输入,要么在 BIOS 里把这个选项打开。

键位脏污也值得一查。我遇到过一台笔记本,数字键 3 按下去回弹慢,快速输入时会连击,导致明明敲的是四位 PIN 实际送进去五位。这种问题在系统里打字时看不出来,只有在 PIN 这种精确匹配的场景才暴露。用屏幕键盘敲一遍,如果过了,那就是物理键盘的问题。

最后一个:外接的蓝牙键盘在登录界面往往连不上,因为蓝牙驱动还没加载。这时候你敲的是笔记本自带键盘,但屏幕上可能还残留着上一次蓝牙键盘的输入缓冲,表现就是"敲了没反应"或者"多出几个字符"。拔掉外设、重启一次,基本就好了。

5. 事前预防:让 PIN 别在关键时刻罢工

5.1 把恢复能力提前准备好

所有 PIN 故障的处理成本,都取决于你事前准备了多少。我自己维护的机器上固定做三件事,成本很低但省心。

第一,每台机器至少保留一个可用的本地管理员账户,口令记在离线的地方。这样即使在线账户出问题、PIN 失效,也还有一个后门能进系统。

第二,BitLocker 恢复密钥一定导出两份:一份打印出来放抽屉,一份存在另一台设备的加密容器里。别只依赖"自动备份到账户",因为你登录不进去的时候,恰恰就是查不了账户的时候。

第三,把账户的备用验证方式配齐。手机号、备用邮箱、验证器应用,能配几个配几个。PIN 重置走的是在线验证,验证方式全失效的时候,你会发现自己被困在一个很尴尬的位置。

这三件事做完大概十分钟,但它们决定的是"出问题时是十分钟解决还是三天解决"。

5.2 系统变更前后的固定动作

PIN 失效有相当一部分是"变更"触发的:系统大版本更新、BIOS 固件升级、主板更换、TPM 固件刷新。这些动作本身没法避免,但可以在做之前把风险降下来。

我的习惯是:做任何涉及固件或主板的操作之前,先执行一次manage-bde -protectors -disable C: -rebootcount 3,给三次重启的免验证窗口;操作完成后确认系统能正常启动、PIN 能正常使用,再执行manage-bde -protectors -enable C:恢复保护。这一套下来,即使中途 TPM 状态变了,也不会被锁在恢复界面。

系统更新方面,大版本更新(比如每年那个功能更新)之前,先确认账户密码是你记得住的,因为更新过程中很可能要求重新验证。别把密码设成"上次登录时随手改的那个",这话听着像废话,但我在现场见过太多次了。

5.3 一个替代思路:给自己留一条不依赖 PIN 的路

如果一台机器反复出现 PIN 失效,与其每次都修,不如换个思路:把指纹或者人脸设为日常登录方式,PIN 只作为备用。Windows Hello 的指纹模板也存在 TPM 里,但它的失效表现通常比 PIN 温和——指纹不认了还能输 PIN,PIN 废了指纹往往也一起废,反过来则不一定。所以多配一种生物识别方式,等于多一层缓冲。

另外,如果你的机器支持,可以考虑用一个独立的硬件安全密钥作为备用验证方式。它不依赖 TPM 的密封状态,换主板、刷固件都不影响。这个方案的实用性因人而异,但对那些经常折腾硬件的机器来说,确实能省掉不少麻烦。

最后分享一个我自己一直在用的小习惯:每次成功设置或重置 PIN 之后,立刻重启一次,用 PIN 登录一遍,确认真的能用,再做别的。这个动作只要两分钟,但它能把"以为修好了、结果下次开机才发现没修好"这种情况挡在门外。我吃过这个亏——有一次改完容器后没重启就关机了,第二天开机发现配置根本没落盘,等于白干。

至于那五种方法的选择顺序,我的实际经验是:前两种能覆盖八成以上的场景,第三种要慎用,后两种是兜底。真正棘手的从来不是技术本身,而是动手之前没搞清楚自己面对的是哪一类故障——先分类,再动手,比什么技巧都管用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进