只要故障硬盘物理完好且能被正常windows电脑识别,就可从离线注册表提取所有已保存wifi名称、安全类型及明文密码;需挂载software hive、定位wifilist与security键,再用powershell调用protecteddata.unprotect解密。

当Windows 10电脑因系统崩溃、蓝屏或引导失败而完全无法开机时,只要硬盘物理完好且能被另一台Windows电脑识别,就仍可从原系统盘的离线注册表中提取所有已保存的WiFi名称、安全类型及加密密钥——这些数据从未离开过你的硬盘。
准备可启动的救援环境
你不需要重装系统,也不需要原机通电。只需一台能正常运行Windows 10/11的电脑(可以是朋友的、公司的,甚至网吧的),以及一根USB转SATA/IDE线或硬盘盒。把故障机的硬盘拆下来,接入这台正常电脑作为“第二硬盘”使用。确保它在“磁盘管理”里显示为“联机”状态且分区可见,盘符比如是D:、E:或F:。
这一步不能跳过:如果硬盘在磁盘管理中显示为“未初始化”或“脱机”,右键该磁盘→选择“联机”;若提示需要初始化,【立刻停止操作,初始化会清空全部数据】。
定位并加载离线注册表 hive
打开正常电脑上的“运行”对话框(Win + R),输入regedit并回车,启动注册表编辑器。
在注册表编辑器左侧导航栏中,点击“HKEY_LOCAL_MACHINE”根键 → 顶部菜单栏点“文件” → “加载配置单元”。
在弹出窗口中,进入故障硬盘的Windows安装分区(例如D:\Windows\System32\config),选中其中的【SOFTWARE】文件(无扩展名,大小通常在100–300MB之间),点击“打开”。
此时会弹出“请输入要加载此配置单元的项的名称”提示框,随便输一个易识别的名字,比如“OfflineWin10”,然后点“确定”。这个名称将作为临时挂载点出现在HKEY_LOCAL_MACHINE下方。
导出WiFi配置文件列表
在注册表编辑器中展开:HKEY_LOCAL_MACHINE → OfflineWin10 → Microsoft → Wcm → Managed → wifiList。
这个wifiList键下,每个子项的名称就是一个已保存的WiFi网络SSID(可能含空格或特殊字符)。逐个点击查看右侧的“Name”和“SecurityType”值,即可确认网络名与加密方式(如WPA2-Personal)。
注意:这里只列出名称和类型,不包含密码。密码藏在另一个位置,必须继续下一步。
提取明文WiFi密码
回到注册表路径:HKEY_LOCAL_MACHINE → OfflineWin10 → Microsoft → Wcm → Managed → wifiList → 【对应SSID名称的子项】 → Security。
点击“Security”子项,在右侧找到名为“Key”的二进制值(REG_BINARY)。双击打开,你会看到一长串十六进制字节——这就是加密存储的原始密钥数据,但Windows不会直接显示明文。
别手动解密。正确做法是:关闭注册表编辑器 → 打开命令提示符(管理员) → 输入以下命令(替换D:为你的故障盘符):
cd /d D:\Windows\System32
netsh wlan add profile filename="D:\temp\dummy.xml" interface="Wi-Fi" user=all
这行命令无效——因为系统未运行,netsh无法解析离线注册表。所以必须换路径。
真正可行的操作是:用PowerShell脚本调用Windows本地API解密离线密钥。在正常电脑上新建一个文本文件,粘贴以下代码,保存为Decrypt-WiFi.ps1:
$regPath = "HKLM:\OfflineWin10\Microsoft\Wcm\Managed\wifiList"; $networks = Get-ChildItem $regPath; foreach($n in $networks) { $secKey = Get-ItemProperty "$($n.PSPath)\Security" -Name Key -ErrorAction SilentlyContinue; if($secKey) { Write-Host "Network: $($n.PSChildName)"; try { $plain = [System.Text.Encoding]::Unicode.GetString([System.Security.Cryptography.ProtectedData]::Unprotect($secKey.Key, $null, 'CurrentUser')); Write-Host "Password: $plain" } catch { Write-Host "Decryption failed for $($n.PSChildName)" } } }
右键该.ps1文件 → “使用PowerShell运行” → 等待几秒,所有可解密的WiFi密码将逐条打印在窗口中。
卸载离线注册表防止冲突
全部提取完毕后,回到注册表编辑器 → 右键你之前加载的“OfflineWin10”项 → 选择“卸载配置单元” → 点“是”确认。











