You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除Windows Hello中非管理员账户的FIDO2密钥?

解决Windows 10非管理员账户下删除FIDO2密钥的思路

问题场景

在Windows 10 Enterprise 22H2的非管理员账户下,通过Windows Hello创建了约40个FIDO2密钥,需要批量删除。现有方案存在权限矛盾:

  • 提升权限的PowerShell无法访问用户专属的密钥归档文件,看不到目标密钥;
  • 非管理员账户的普通PowerShell能看到密钥,但无删除权限;
  • 第三方工具(webauthn-fido2-key-remover)同样受限于权限问题无法生效。

注意:Windows 11 22H2专属的FIDO2密钥管理API不适用于当前Win10环境。

可行解决思路

1. 以用户上下文启动提升权限会话批量删除

通过runas命令,以当前非管理员用户身份启动带管理员权限的PowerShell,既保留用户上下文可读取密钥,又具备删除权限:

runas /user:%username% "powershell -Command ""certutil -csp NGC -key | ForEach-Object { if ($_ -match '^[a-fA-F0-9]+$') { certutil -csp NGC -delkey $_ } }"""

执行时需输入当前用户密码,若用户无管理员权限,需先临时将其加入本地管理员组:

  • 管理员账户下执行:net localgroup administrators <你的用户名> /add
  • 删除完成后移除权限:net localgroup administrators <你的用户名> /delete

2. 直接操作NGC密钥存储目录

FIDO2密钥(NGC容器)存储于%LOCALAPPDATA%\Microsoft\NGC,步骤如下:

  • 关闭所有占用NGC文件的进程(Windows Hello服务、浏览器等);
  • 管理员权限打开文件资源管理器,导航至上述目录;
  • 给该目录添加当前非管理员用户的完全控制权限;
  • 切换回非管理员账户,删除目录内所有文件(注意:此操作会清除该用户所有Windows Hello相关设置,包括PIN、生物识别数据,操作前请备份)。

3. 用PowerShell模拟用户上下文执行提升操作

通过Start-Process结合用户凭据,启动带管理员权限的进程并加载用户配置:

$cred = Get-Credential -UserName $env:USERNAME -Message "Enter your password"
Start-Process powershell -Credential $cred -ArgumentList "-NoExit", "-Command", "certutil -csp NGC -key | ForEach-Object { if (`$_ -match '^[a-fA-F0-9]+$') { certutil -csp NGC -delkey `$_ } }" -Verb RunAs

此方法同样需要用户临时拥有管理员权限以执行提升操作。

4. 调整本地组权限赋予密钥删除权限

将用户加入Cryptographic Operators组,获得加密密钥管理权限:

  • 管理员账户打开计算机管理,导航至本地用户和组 -> 组 -> Cryptographic Operators;
  • 添加当前非管理员用户至该组;
  • 注销重新登录后,尝试在普通PowerShell中执行删除命令。

内容的提问来源于stack exchange,提问作者erionpc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:45:27