零 DLL 注入
不向任何进程装载代码。崩溃半径止于自己;杀软与沙箱也少一层敏感行为。
为什么是这样
注入能把标签画进真正的标题栏,代价是进到浏览器和密码管理器的进程里。 TabNest 待在外面:观察走 WinEvent,操作走普通窗口 API。
不向任何进程装载代码。崩溃半径止于自己;杀软与沙箱也少一层敏感行为。
裁剪后的自包含单文件。不装 .NET,不装 VC++,不要管理员权限。
每次改窗口位置之前先落盘快照。崩溃、强杀、卸载,窗口和任务栏按钮都会回去。
空闲时的 CPU 占用压在测量分辨率的地板上,工作集约 32 MB。没有轮询,每一次唤醒都对应真实窗口事件。
设置里的每一项都有测试断言「改了之后行为不同」。点了没反应比没有这个开关更糟。
清单是 asInvoker。提权反而会因为完整性级别对不上,让一部分窗口分不了组。
对照 Groupy 2
标本是 Groupy 2 v2.3.1 与 TabNest 0.1.4,Windows 11 26100 x64,空闲 20 秒。 你的数字会不同。把标签画进原生标题栏必须在目标进程内执行代码,TabNest 不做这件事 —— 不是还没做,是不打算做。
| TabNest | Groupy 2 | |
|---|---|---|
| 许可 | MIT,开源 | 商业,闭源 |
| 向其他进程注入 | 无 | 测试机 46 个进程 |
| 常驻工作集 | 31.9 MB | 78 MB |
| 空闲 CPU | 单核 0.00~0.08% | 单核 0.08% |
| 线程数 | 11 | 30 |
| 句柄数 | 344 | 706 |
| 下载体积 | 11.3 MB 单文件 | 24.6 MB 安装包 |
| 标签画进原生标题栏 | 无,刻意如此 | 有 |
| 替换资源管理器原生标签 | 无 | 有 |
| 代码签名 | 暂无 | 有 |
空闲 CPU 那一行是打平,不是赢:单核 0.08% 在 20 秒里就是 16 毫秒,一个调度时钟节拍, 也就是这种测法的分辨率地板,Groupy 落在同样的 16 毫秒上。这里如实写出来, 是因为本表早先的版本声称过一个数据并不支持的差距。
Groupy 确实更强的地方:集成标签、原生标签替换、文档级规则、悬停预览、已签名的二进制, 以及多年积累的兼容性工作。前四项都要求在别人的进程里跑代码。 如果你需要标签画在真正的标题栏里,那就买 Groupy —— 它是个好产品。
安装
安装包提供开始菜单和开机自启。也可以只下 exe,放到任意目录双击。
配置在 %LOCALAPPDATA%\TabNest\,卸载时保留。
没有 Authenticode 证书。首次运行 SmartScreen 可能提示「Windows 已保护你的电脑」。