影刀RPA卸载残留篡改环境变量的排查

之前装过影刀RPA,用了一段时间卸载了。最近整理环境变量发现 Path 里一直挂着 F:\RPA\ShadowBot(影刀内部代号叫 ShadowBot / xbot),手动删掉之后过段时间又自己加回来,软件目录早就没了,这条路径却像牛皮癣一样。记录一下排查过程,给卸载过的同学提个醒。

现象

  • 程序主目录 F:\RPA\ShadowBot 已经被卸载程序删掉了
  • 用户级环境变量 Path 里残留 F:\RPA\ShadowBot
  • 在环境变量或者注册表 HKCU\Environment 删掉这条,过段时间又被写回

残留物清单

软件本体是删干净了,但注册表和本地目录留了一堆:

ini 复制代码
HKCU\Environment                              → Path 里塞了 F:\RPA\ShadowBot
HKLM\SOFTWARE\ShadowBot x64                   → InstallPath=F:\RPA\ShadowBot, Version=6.0.30
HKLM\SOFTWARE\Classes\ShadowBot               → shadowbot:// URL 协议
HKLM...\Uninstall{CD0C508E-...}_is1         → 卸载项,指向已经不存在的 installer
HKCU\SOFTWARE\ShadowBot                       → 硬件指纹(MAC / CPU / 主板UUID / 屏幕分辨率)
HKCU\SOFTWARE\ShadowBot x64                   → DefenderWhitelist(疑似想加 Defender 白名单)
C:\Users<你>\AppData\Local\ShadowBot         → CEF 缓存、日志、ShadowBot.Wer.dll
C:\ProgramData\ShadowBot                      → 空目录

卸载程序只删了程序文件本身,上面这些一个都没清。而 HKLM\SOFTWARE\ShadowBot x64 里的 InstallPath,就是环境变量被反复写回的数据源。

关键日志

日志在 %LocalAppData%\ShadowBot\log,挑几条关键的。

桥接安装器静默启动(20260722.bridgeinstaller.log):

ini 复制代码
2026-07-22 16:37:44,834 [1] [ERROR] : Environment variable 'SHADOWBOT_SHARED_PRODUCT_CONFIG' not found or empty
2026-07-22 16:37:45,070 [1] [INFO] : [App::Initialize] CommandLineOptions: Kind:BridgeChrome, Silence:True, Version:V2

启动会先检查自家的环境变量,然后以 Silence:True(静默)方式跑 Chrome 桥接。

主程序日志(20260722.log),异常堆栈直接把源码路径吐出来了:

ini 复制代码
2026-07-22 16:38:25,725 [1] [INFO] : Client Config init, WebApi=https://api.winrobot360.com/ ...
2026-07-22 16:38:26,400 [1] [INFO] : ShadowBot 6.0.30 Start...
2026-07-22 16:38:26,738 [1] [ERROR] : Sync Theme Error OnInit
System.ArgumentException: The directory name '...\ShadowBot\users' does not exist.
   at ShadowBot.Runtime.ThemeConfig.SyncTheme() in E:\Work\xbot\src\client\ShadowBot.Runtime\Users\UserSettings.cs:line 380

E:\Work\xbot... 是开发机的源码路径,内部项目代号 xbot ,和官网 CDN 域名 winrobot-pub-a-cos.yingdao.com 里的 xybot 也能对上。

第二次启动的日志(20260729.log)里还有一条比较有意思:

arduino 复制代码
2026-07-29 19:39:50,322 [6] [WARN] : Failed to get default browser information
   at ShadowBot.Runtime.Security.LocalMachine.MACHINECONFIG.GetDefaultBrowser() in ...\LocalMachine.cs:line 590

启动时会去读系统默认浏览器信息。

环境变量是怎么被写回的

排查过程中没找到计划任务、没有系统服务、没有 Run 启动项、也没有常驻进程在后台盯着注册表。所以不是定时器在那秒级写回,而是事件触发型的自愈逻辑:

  1. HKLM\SOFTWARE\ShadowBot x64 里的 InstallPath 记着"我应该住在 F:\RPA\ShadowBot"
  2. 桥接器(bridgeinstallerKind:BridgeChrome)、shadowbot:// 协议、或者残留的本地文件,在某些事件触发时被拉起
  3. 拉起后检查 Path 里有没有自己的 InstallPath,没有就写回

光删 Path 条目没用,得把 InstallPath 这个数据源也一起干掉,闭环才能断。

实测:清掉所有残留后,连续监控 60 秒,Path 没再被写回。

清理脚本

操作注册表前建议先备份(reg export 一下就行)。下面命令需要管理员 PowerShell 执行。

1. 移除环境变量里的残留路径(这条用普通 PowerShell 就行,改的是当前用户的):

perl 复制代码
$current = [Environment]::GetEnvironmentVariable('Path', 'User')
$parts = $current -split ';' | Where-Object { $_ -ne '' -and $_ -ne 'F:\RPA\ShadowBot' }
[Environment]::SetEnvironmentVariable('Path', ($parts -join ';'), 'User')

2. 删除注册表残留

arduino 复制代码
reg delete "HKLM\SOFTWARE\ShadowBot x64" /f
reg delete "HKLM\SOFTWARE\Classes\ShadowBot" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{CD0C508E-D6A7-48D3-93D7-269FA68A1440}_is1" /f
Remove-Item "HKCU:\SOFTWARE\ShadowBot" -Recurse -Force
Remove-Item "HKCU:\SOFTWARE\ShadowBot x64" -Recurse -Force

3. 删本地残留目录

bash 复制代码
Remove-Item "C:\ProgramData\ShadowBot" -Recurse -Force
Remove-Item "$env:LOCALAPPDATA\ShadowBot" -Recurse -Force

4. 重启电脑,开个新终端验证

bash 复制代码
echo %Path%

确认输出里没有 ShadowBot 就完事了。

注意:上面的 {CD0C508E-D6A7-48D3-93D7-269FA68A1440} 是我这台机器上的 appid,不同版本可能不一样。可以在 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 下搜 ShadowBot 或者 影刀 确认一下自己机器上的值。

写在最后

卸载残留这事其实不少软件都有,但大部分只是懒得清注册表,最多留几个空键。影刀这个比较特别的地方在于:残留的 InstallPath 配合桥接器的自愈逻辑,会让环境变量主动写回,光删 Path 没用,得连数据源一起删才能断根。

相关推荐
深海鱼在掘金3 天前
深入浅出RAG——第7章:基础篇实战:文档问答机器人
人工智能·typescript·命令行
Patrick_Wilson10 天前
你知道 git check 的故事吗
git·程序员·命令行
小溪彼岸10 天前
终端文件查找工具:fd
命令行
小溪彼岸10 天前
终端可视化文件管理工具:Yazi
命令行
Wesleyblue16 天前
Python解释器工作原理解析
命令行·环境变量·工作原理·脚本参数·python解释器
寒水馨16 天前
macOS下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-osx-arm64.pkg)
macos·自动化·跨平台·shell·脚本·命令行·powershell
寒水馨16 天前
Linux下载、安装PowerShell-v7.6.4(附安装包powershell-7.6.4-linux-x64.tar.gz)
linux·跨平台·自动化运维·devops·命令行·powershell·脚本语言
其实防守也摸鱼24 天前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统
其实防守也摸鱼24 天前
前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案
服务器·前端·数据库·学习·ai·命令行·linux系统