2026/10/8 13:31:30

我给电脑装了多少软件?用 AI 盘了一遍,183 个

我给电脑装了多少软件?用 AI 盘了一遍,183 个 我给电脑装了多少软件用 AI 盘了一遍183 个起因起因挺蠢的。想装一个截图工具折腾半天装完才发现我早就装过一个功能差不多的。这台电脑用了几年软件是陆陆续续堆上去的。装的时候都记得装完就忘。等到真要找一个东西的时候要么翻开始菜单要么干脆重装一遍。还有第二个原因更要紧换设备。我大概是两三年换一次主力机的节奏。每次换机最痛苦的不是搬数据是重建环境。这个工具去哪下载当时是哪个版本那个配置项叫什么来着全靠回忆回忆不全就得再用一段时间才能把习惯补回来。所以我想不如趁这个机会把软件清单盘一遍留个底。这件事不挑工具我用的是 WorkBuddy但说实话这件事对工具没要求。Claude Code、Cursor、Codex CLI或者任何能读写本地文件、能执行命令的本地 Agent都能做。关键能力就两个能读文件能跑命令。剩下的都是它自己的事。值得一提的是跨平台也没问题。Windows 走注册表macOS 可以扫/Applications加brew list --formula思路是一样的。它是怎么一回事这是我最想搞清楚的部分。整个过程拆开看是四步一、为什么从注册表入手Windows 上想统计装了什么软件能下手的地方有好几个开始菜单、Program Files 目录、注册表。前两个都不靠谱。开始菜单靠软件自己往里面放快捷方式漏的漏、留的留Program Files 目录更乱卸载残留、共享组件、空文件夹全堆在里面而且装到 D 盘、E 盘的软件根本不在这儿。注册表是唯一一份系统自己维护的账本。任何走正规安装流程的软件都会在「卸载」信息里留一条记录。软件卸载时这条记录会跟着删掉。也就是说它的准确性不依赖软件厂商有多上心而是由安装器保证的。读的位置是这几个键HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall二、三个键分工不一样这三个键不是重复的各有各的管辖范围键管什么漏了会怎样HKLM\...\Uninstall64 位程序漏掉大部分现代软件HKLM\WOW6432Node\...\Uninstall32 位程序漏掉一堆老软件和国产客户端HKCU\...\Uninstall只装在当前用户下的软件漏掉免管理员的轻量工具WOW6432Node是 Windows 的 64 位系统重定向机制64 位系统上跑 32 位程序时注册表访问会被自动转发到这个节点免得两边打架。所以它不是一个额外的地方是 32 位软件的唯一去处。第三个别看它不起眼。像一些不需要管理员权限、直接装进用户目录的 AI 工具只写在这里。我机器上就有一批。顺带说一句同一个软件可能同时出现在多个键里比如先装过一次 32 位版又装了 64 位版所以拿到结果之后要去重。我这台机器原始记录 330 条去重后是 315 个不同的名字。三、清洗不是靠猜注册表自己标了这一步是我觉得最有意思的地方。330 条记录里真正能算用户装的软件的其实只有一半多。剩下的是运行库、SDK 组件、驱动。一开始我以为得靠经验硬筛——写一堆规则名字里带 “Visual C” 的删掉、带 “Runtime” 的删掉、带 “Driver” 的删掉。这么干当然能work但很脏也容易误杀。后来发现根本不用。注册表里本来就有字段在标注这件事。每个卸载项除了名字和版本还带着一些元数据字段字段含义DisplayName给人看的软件名DisplayVersion版本号Publisher发行厂商InstallLocation安装路径SystemComponent值为 1 时表示这是系统组件不该展示给用户看ReleaseType标明这是补丁还是完整安装如 Update / HotfixParentKeyName指向它的父程序说明这只是某个软件的子组件也就是说微软在设计这套机制的时候就预见到了这个问题专门留了SystemComponent这个标记位让那些不该出现在卸载程序列表里的东西自己声明身份。我回查了一下我这台机器的真实数据原始记录 330 条 SystemComponent1 149 条 剩下 181 条149 条占了将近一半。而且分布非常集中噪声来源条目数Windows SDK 各类子组件45Visual C 运行库 2005–202223NVIDIA 驱动全家桶21光这三家就 89 条占了系统组件的一大半。这些条目如果留在表里清单会直接变成一堆没人看得懂的英文类库名。按SystemComponent剔除之后剩 181 条再叠加从便携目录扫出来的绿色软件、去掉重复最后得到 183 条——量级正好对得上。这里还有个副产品InstallLocation字段其实有 229 条是空的也就是说大部分软件根本不记录自己装在哪。所以如果你想靠这个字段去遍历目录是走不通的。四、注册表管不到的地方上面这套方法有个明确的盲区绿色版、便携版软件不写注册表。它们不解压安装、不注册卸载项理论上系统完全不知道它们存在。我机器上这类还不少比如放在自建目录里的 qBittorrent、VeraCrypt、KeePass。所以还得补一轮目录遍历。但这一步不能瞎扫——扫整个 C 盘又慢又吵还会把缓存目录当成软件。做法是限定在几个已知的软件目录里逐层列E:\04software\tools ← 各类工具 E:\04software\ai ← AI 工具 E:\04software\code_tools ← 开发工具 D:\software\工具 D:\software\科研第一层看目录名认不出来的再往下钻一层看内容。靠这个又捞回来十几个不在注册表里的软件。五、最难的不是采集是判断前面几步都是机械操作真正费劲的是最后这步。「作用」和「是否开源」这两列不是采集出来的是判断出来的。作用好办靠软件名、厂商、安装路径来认基本不会错。是否开源就得靠知识了而知识会出错。我注意到它在处理这件事上的态度挺克制对拿不准的那几个NexQ、Metrik、stack-board 这类冷门工具它没有硬猜而是钻进安装目录去找README、使用说明、LICENSE文件。找到证据就下结论找不到就标「待核实」。最后表里 19 条是「待核实」。我觉得这比填 19 个可能是错的答案要好。它另外还加了一个「部分开源」的状态用来处理 JetBrains 这种 Community 版开源、Ultimate 版闭源的双发行版情况。不加这个状态的话IDEA 和 PyCharm 只能二选一怎么填都是错的。六、一份数据两种渲染最后一步没什么技术含量但设计上值得一提。整理好的数据只有一份一个结构化的列表网页和 Excel 是从同一份数据渲染出来的两个视图网页数据内嵌成 JSON前端做搜索和筛选不需要后端Excel用 openpyxl 写出三个工作表带自动筛选和冻结表头这样做的好处是数据只维护一处。以后装了新软件想更新清单改数据重跑脚本就行两个文件同时更新不会出现网页和表格数字对不上的情况。结果最后拿到两个文件。这是网页版的样子顶部是统计卡片和搜索框下面是分类标签。点标签能直接切到某一类比如「开发与编程」顺便能看出「部分开源」这个状态的实际效果——IntelliJ IDEA 和 PyCharm 都标着琥珀色的「部分」备注里写明 Community 版和 Professional 版的区别。再往下是附录专门放那些被剔除的系统组件附录里也能看到清洗的痕迹比如 NVIDIA 那二十多条被合并成了一行。最终统计用户软件 183 项其中开源 67 项、闭源 91 项、部分开源 6 项、待核实 19 项。顺手还看出点东西。比如我机器上 JDK 装了 21、17、11 三个版本并存Maven 也是两个版本这种「历史遗留」的重复安装不盘一遍是真不知道。踩到的一个坑顺手记一个技术细节。这台机器上命令行工具的输出不回显。命令明明跑成功了退出码是 0但拿不到结果。所以它改成先把结果写进一个临时文件再读文件取内容。这是个环境问题不是工具问题但不注意的话会以为扫描失败了。复现提示词下面这段可以直接复制到任何本地 AI 助手用。它会扫描你电脑上的软件生成一个网页和一个表格文件。帮我扫描这台电脑上已安装的所有软件整理成一份清单。 【数据来源要全】 1. Windows读取注册表三个卸载键缺一不可 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall macOS扫描 /Applications、~/Applications以及 Homebrewbrew list --formula 2. 再遍历一遍常见的便携/绿色软件目录比如 D:\software、E:\software 这类自建目录 把不写注册表的绿色版也捞出来。不要扫整个系统盘。 【清洗要按注册表字段来不要靠猜】 优先用 SystemComponent 1 剔除系统组件这个字段就是干这个的。 VC 运行库、.NET 运行时、Windows SDK、显卡/主板/网卡驱动这类 单独放一份「系统组件与驱动」附录不要混进主表。 同一个软件装了多个版本的合并成一条版本号写在一起。 【每条软件要有这四列】 - 软件名称 - 版本 - 作用一句话说清它是干什么的 - 是否开源只能填「是 / 否 / 部分 / 待核实」四种之一 「部分」用于 Community 版开源、商业版闭源这种情况比如 JetBrains 系 【分类】 按用途分类比如开发与编程 / AI 与大模型 / 效率与系统工具 / 文档笔记与办公 / 通讯与协作 / 同步备份与网盘 / 安全与加密 / 阅读与科研 / 下载与网络 / 媒体与影音 / 游戏与娱乐 / 金融理财 等按我的实际情况调整。 【准确性要求】 不确定用途或开源状态的软件标注「待核实」绝对不要编造。 遇到判断不了的打开它的安装目录找 README、使用说明、LICENSE 文件 从里面找证据再下结论。 【交付两个文件都放到当前工作目录的 outputs/ 文件夹里】 1. 一个 HTML 页面带搜索框和分类筛选标签可以按分类切换、按关键词实时搜索 浅色主题、简洁风格。要有统计卡片显示总数和开源/闭源分布。 筛选和搜索要纯前端实现数据内嵌不要依赖本地服务器。 2. 一个表格文件.xlsx包含上面所有列带自动筛选和冻结表头。 系统组件单独一个工作表再加一个统计概览工作表。 做完告诉我一共扫到多少条原始记录、清洗掉多少、开源比例是多少、 有哪些标了「待核实」。就这样。如果你也装了太多软件记不住或者正准备换电脑花几分钟跑一遍能省下不少以后的麻烦。