如何在 Windows 上卸载 PuTTY
PuTTY 基本不往硬盘上写东西,保存的会话、主机密钥和设置全在当前用户的注册表里,不在数据文件夹里,所以在设置里直接卸载不会动它们。这份指南覆盖用 PuTTY.PuTTY winget 包按机器安装的 PuTTY。
先退出 PuTTY
关掉所有打开的 PuTTY 窗口,如果托盘里还跑着 Pageant(SSH 密钥代理),也一起退出。卸载前在任务管理器(Ctrl+Shift+Esc)里确认没有 putty.exe 或 pageant.exe 还在。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 PuTTY,选择卸载,或者运行:
winget uninstall --id PuTTY.PuTTY
先备份保存的会话
如果你在 PuTTY 里保存过会话(填会话名再点 Save),它们和你确认过的主机密钥都存在注册表里,不是文件。打开 regedit,找到 HKEY_CURRENT_USER\Software\SimonTatham\PuTTY,想保留的话先导出这个键(文件 › 导出)再卸载。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
HKCU\Software\SimonTatham\PuTTY\Sessions |
保存的会话,一个会话名一个子键 | 保存过会话的话先导出,卸载器不会动它 |
HKCU\Software\SimonTatham\PuTTY\SshHostKeys |
你确认过的主机密钥,让 PuTTY 不再重复警告 | 想重装后还是同一批信任的主机,和上面的键一起导出 |
HKLM\SOFTWARE\SimonTatham\PuTTY |
PuTTY 自己写的机器级设置 | 卸载器会删 |
检查结果
卸载完成后运行下面几条只读命令:
Get-Process putty, pageant -ErrorAction SilentlyContinue
winget list --id PuTTY.PuTTY
Test-Path "$env:ProgramFiles\PuTTY"
Get-Item "HKCU:\Software\SimonTatham\PuTTY" -ErrorAction SilentlyContinue
Get-Process没有输出只表示未观察到匹配进程,被忽略的查询错误不能当作已经退出。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。Test-Path返回False,说明程序目录已经没了;返回True,说明那里还有文件。Get-Item查注册表键,只要你保存过会话或确认过主机密钥就会打印出来;卸载应用不会动它,备份好之后想完全清空可以自己删掉。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 MSI 卸载器,删的是同一批程序文件和机器级注册表键,不会动你按用户保存的会话和主机密钥。
Mole 会列出什么
对按机器安装的 winget 版 PuTTY,卸载审查列表是空的:MSI 卸载器自己就把程序目录、开始菜单快捷方式和机器级注册表键都删了,没有留给 Mole 的东西。Mole 也没有单独列出这一款的程序目录,因为安装程序的登记里没有写安装位置,想确认目录已经没了可以自己去查 Program Files\PuTTY。你按用户保存的会话和主机密钥不管怎样都不在这张列表里。
这次检查覆盖了什么
测试的是通过 winget 用 arm64 版 MSI 按机器安装的 PuTTY 0.85。这次没有保存过会话,保存会话和主机密钥的注册表键都没有被用到。
