
Sandboxie 沙箱工具
这篇文章我从七月份就开始写了,然后七月份就写完了,然后我就忘了我还写过这么一篇文章了……今天打开一看,嚯,竟然已经到了临门一脚,配上图就可以发出去了,晕……于是赶紧掏出 Surface,咔咔一顿截图,好把存货发出来。
之前一直使用 VMware Workstation 里的一个 Windows 8.1 虚拟机来运行那些不是很想安装却不得不装的一些软件,虽然 Windows 8.1 本身的资源占用优化的已经足够好,但虚拟机毕竟还是太笨重,只是为了用一下某款软件就要先把其它软件关闭,打开虚拟机,用完之后再关闭。最近则是发现了一个很好用的工具,叫做 Sandboxie,可以将软件放置在沙箱中运行,这样不管沙箱中的软件进行什么操作都不会真正影响到宿主系统。同时由于共享主机内核,软件的启动基本是无感的,额外的资源占用也接近于 0。
目前所说 Sandboxie,一般都是指 Sandboxie 开源后,由 xanasoft 维护的分支版本 Sandboxie-Plus。当然,同时也提供了 Classic 版本,和 Plus 版本的核心其实是一样的,主要在于 Classic 版本使用的是旧版 MFC UI,不再更新,新的功能不能通过图形界面修改,而需要手动编辑配置文件。另一方面,绝大多数新增功能都是要钱的,使用 Classic 版本也算是眼不见为净了。
Classic 版本对我来说已经足够,因此下面的步骤使用 Classic 版本作为演示。
目录
安装 Sandboxie
从这里下载最新版的安装包:Releases · sandboxie-plus/Sandboxie
Sandboxie 会捆绑一个 ImDisk,是一个开源的虚拟磁盘软件,和 Sandboxie 某些功能有关系,可以放心安装。
配置 Sandboxie
默认情况下 Sandboxie 会像发了疯一样尝试往你的桌面上添加一个叫做在沙箱中运行网页浏览器的快捷方式。如果你用不到,可以在 Sandboxie 的系统设置中关闭,只需要取消勾选对应的选项即可。
除此之外对于 Sandboxie 本体的设置就没什么需要更改的了,大部分功能都和沙箱而不是本体有关。
创建沙箱
默认提供了一个叫做 DefaultBox 的沙箱,注意由于软件本身并没有区分某个沙箱是不是默认的功能,因此这个沙箱一定不要改名。虽然直接用这个沙箱也不是不可以,但还是更加推荐为每个要使用的软件创建一个沙箱。
点击顶部菜单栏里的沙箱,然后点击创建新沙箱。
注意名称里不能有中文。
然后点击确定,就可以看到新创建的沙箱。

配置沙箱
默认状况下的沙箱不算特别好用,我们右键刚刚创建的沙箱,点击沙箱设置。
修改要恢复的文件
可能翻译的不太直白,这个功能主要是针对一些沙箱内运行的软件可能产生的有用文件而设计的,这样在沙箱里的软件全部关闭后,这些文件可以从沙箱里移出,并且同步到宿主系统上。分为两部分,快速恢复和直接恢复。
快速回复这个部分,默认设置了三个文件夹,文档、下载、和桌面。我的策略是,下载/网盘类软件,保留下载文件夹的快速恢复功能,另外两个项目删掉;其他软件就一个不留。

直接恢复我是整个关闭的,里面主要是针对各类配置文件的,要用到此类文件的软件本来我也不需要放在沙箱里,因此这个功能对我没用。
以上只是建议,请根据实际需要调整。
设置禁止访问的文件夹
比较可惜的是免费版(注意并非 Classic 和 Plus 的区别)没有隐私沙箱(也就是通过 OpenFilePath 实现的白名单功能),我们只能把不希望被访问到的文件夹一个一个加进禁止读写里面。
好在正常情况下也不会太多,主要就是个人的一些私密文件,对我来说就是 .ssh 文件夹等。
修改沙箱提示
这个见仁见智,默认情况下 Sandboxie 会向沙盒中运行的软件的标题栏加入 [#] 符号,并且在鼠标悬浮在标题栏中时在窗口外围显示一圈黄色边框,来提醒你软件正运行在沙箱中。我是觉得有点丑,所以在确定软件安装没问题之后,就会把这两个功能关闭。
打开了差不多就是这个效果,我反正是觉得有点丑。


使用 Sandboxie 沙箱安装软件
终于可以开始安装软件了!
正常情况下,在你安装完 Sandboxie 后,右键软件时就会弹出在沙箱中运行的选项,我们点击。
然后会弹出一个沙箱列表,选一个,点击运行。
因为是在安装程序,很可能会遇到 UAC。这里我们可以使用 Sandboxie 的一大特色功能之假管理员,在弹出的窗口中点击否,就可以让软件以为自己拥有管理员权限(但其实没有),从而能够继续安装。正常情况下我们安装软件时都应该选择否,除非出错了,才应该尝试给予真正的管理员权限,也就是点击是。

然后等待程序安装完成。
解决 SBIE2189
SBIE2189 app.exe 很可能是一个基于 Chromium 的应用程序,但其镜像类型并非 Chrome;因此很可能会执行失败。这个错误主要是因为程序是个 Electron 软件,也就是说用了 Chrome 的底子,但却并没有被配置为使用 Chrome 的缓解措施。随着网页套壳软件越来越多,遇到这个错误的可能性大大提升。
如果软件正常运行当然可以直接无视,点击下方的隐藏,Sandboxie 就不会再因为这个错误而弹出错误弹窗。但如果软件运行异常,甚至闪退,那么就需要修改配置。
因为 Classic 版本没有相关的 UI 界面,但核心仍然支持 SpecialImage,因此我们可以通过手动编辑 INI 文件的方式来更改镜像类型。
点击上方的设置,选择编辑配置文件。
找到对应的配置节,例如 [Example]。这里我们以 app.exe 这个名字为例,就在下方插入:
SpecialImage=chrome,app.exe然后保存这个文件,返回 Sandboxie Control,点击刷新配置文件(注意必须要点,否则更改丢失)即可。
再次打开软件,错误就消失了。
创建快捷方式
由于是在沙箱中安装程序,相关的修改并不会在宿主系统中体现出来,此时我们就需要创建对应的快捷方式。
我们点击 Sandboxie Control 顶部的配置,打开系统设置,然后点击添加快捷方式图标。
会让你选择一个沙箱,比如刚刚的 Example,然后就会打开 Sandboxie 开始菜单。
把鼠标悬浮到程序上,右侧就会显示出一个程序列表。这里仅在沙箱中出现的快捷方式会优先显示,所以不用担心难找,最上面那个就是,我们选择。
然后桌面上就会多出一个快捷方式,命名规则是 [沙箱名称] 软件名称。我是觉得前面加个沙箱名称有点丑,所以我一般会把它去掉,再加上我不喜欢软件在沙箱里运行的提示,效果和直接安装在系统上的软件基本没有差别,非常好用。
测试一下,双击打开,可以看到软件在沙箱里运行起来了。
最后,如果要安装更多程序,只需要重复上面的流程即可。建议每个软件一个沙箱,但如果你懒得折腾,特别是不想在各个沙箱之间同步那一大堆的文件夹读取黑名单的话,全部都塞进一个沙箱也不是不可以。
将已有软件放入沙箱
Sandboxie 还支持将已有的软件置于沙箱内运行。
临时运行
临时在沙箱内运行软件很简单,只需要右键沙箱名称,或者点击顶部的沙箱,选择沙箱名称,点击运行任意软件或从开始菜单运行即可。

Sandboxie 同时还提供了在沙箱中运行网页浏览器和电子邮件客户端的快捷选项。同时支持使用文件资源管理器浏览文件,并且在沙箱中运行的文件资源管理器是支持和直接运行的文件资源管理器间互相复制和移动文件的。
如果你开启了在沙箱中运行的提示,就可以看到软件的标题栏里出现了 [#],并且会有一圈黄色的边框。
强制运行
由于 Sandboxie 会安装驱动,因此支持强制已有程序在沙箱中运行!
只需要在沙箱的设置里,把你希望运行在沙箱中的软件添加进去即可。当然,这样做肯定不如直接在沙箱中安装软件来的好,特别是某些安全功能,对沙箱内软件的支持要好于沙箱外的软件。
同样也支持创建已有软件在沙箱中运行的快捷方式,和沙箱内软件的流程是一样的,在此不再赘述。
Sandboxie 和其他软件对比
虚拟机软件
诸如 VMware Workstation、Virtualbox、Hyper-V 等虚拟机软件,和 Sandboxie 相比最大的问题是笨重、笨重、还是笨重,因为需要运行完整的操作系统,资源占用大,而且由于模拟了独立的硬件,虚拟机并没有办法无缝使用宿主系统的 GPU,也没办法共享网络代理设置等。相比之下 Sandboxie 就没有这些问题。
不过虚拟机在安全性上肯定也显著优于沙箱,不管怎么说,沙箱里的软件还是共享的内核,无法像虚拟机那样做到很高程度的环境隔离。
Windows Sandbox
专业版自带的沙箱工具,虽说是沙箱,是共享宿主的内核,但其本身的设计使得 Windows Sandbox 比 Sandboxie 逊色不少。Sandboxie 的沙箱更接近于现代操作系统上的沙箱概念(甚至 Windows 自己的 Appx/Msix 沙箱也更加接近 Sandboxie),而 Windows Sandbox 更像是 Docker。
首先 Windows Sandbox 功能需要开启 Hyper-V,就这一点就已经十分劝退了,至少对我来说是这样,只要开启了 Hyper-V,VMware Workstation 中运行老旧操作系统的虚拟机的声音就会撕裂成很惊为天人的样子,完全无法使用。
其次 Windows Sandbox 里的软件并不能直接显示在宿主系统上,而是使用的 RDP/Hyper-V 增强模式。这一点使得 Windows Sandbox 的图形性能变成了几乎没有,跨沙箱盒宿主系统的文件传输也慢的要命。
最后 Windows Sandbox 默认情况下在关闭后会清空一切数据。这一点决定了 Windows Sandbox 难以日用,唯一的折中方案是手动编写配置文件,以达到启动对应的 Sandbox 时自动安装某个软件并打开的效果。对没错就是每次都安装一遍,再加上微软祖传 XML 语法,使得 Windows Sandbox 对新手极为不友好。
冰点还原类软件
很难说这种软件和沙箱之间还有没有类似之处,但至少两者的目的是一样的,也就是维护系统的纯净状态。Sandboxie 之类的沙箱软件是把软件的操作限制起来,而冰点还原之类的软件则是让所有操作永远无效。唯一的问题是完全不适合日用,只适合公用系统,毕竟重启还原杀伤性太强了。
总结
通过 Sandboxie,可以将普通的 Windows 软件置于沙箱内运行,防止软件随意写入文件,同时还可通过修改配置来防止软件读取敏感数据。只可惜 Windows 10X 和 UWP 一个都没做起来,macOS 都快玩烂的东西,微软就是搞不成,否则现在的我们也早就在 Windows 系统上用上了系统级的沙箱机制了。








