强制子进程
ForceChildren 是 Sandboxie Ini 中的一项沙盒设置(v1.14.5 / 5.69.5 引入),强制父进程的特定子进程在指定沙盒中启动。当你想让已知父进程启动的任何进程都被自动沙盒化时,这很有用。
语法
一般形式:
其中 <程序> 可以是:
- 带通配符的映像路径,例如
C:\Users\*\App\*.exe—— 通配符模式会与规范路径进行不区分大小写的匹配。 - 不带反斜杠的映像名称,例如
dopus.exe—— 按映像名称使用驱动程序映像匹配规则进行匹配。
注意:
行为和匹配规则
-
创建新进程时会评估
ForceChildren条目。如果父进程匹配任何已启用沙盒的ForceChildren规则,子进程将被强制进入该沙盒。3 -
匹配尝试(大致按优先级顺序):
-
含通配符的规则使用模式引擎;不含通配符的规则使用支持 NLS 的字符串比较和映像匹配辅助例程,以进行正确的语言感知检查。24
-
沙盒的
ForceChildren匹配取决于该沙盒对当前用户/会话已启用且已启用强制规则。DisableForceRules之类的设置会阻止应用该沙盒的强制规则。6 -
某些系统进程和 Sandboxie 内部组件可豁免强制。Sandboxie 主目录永远不会被强制。7
示例
-
强制特定父二进制文件的子进程(映像名称):
-
使用通配符模式匹配父映像路径:
命令行开关
详情参见 启动命令行。
相关开关:
/force_children—— 从命令行启用/影响强制子进程行为。/fcp——/force_children的简写(在支持处)。
与警报和其他强制设置的交互
-
当驱动程序确定新启动的进程应使用哪个沙盒(如果有)时,
ForceChildren条目会与ForceFolder和ForceProcess条目一起评估。 -
如果匹配规则启用了警报(例如,当强制规则受策略限制时),驱动程序可能显示警报而不是强制该进程。驱动程序跟踪一个"警报"状态,可以阻止强制,并可选地记录或通知用户。8
-
ForceChildren设置补充了ForceProcess(无论父进程如何,直接按名称强制命名进程)和ForceFolder(按文件夹路径强制进程)。当你想强制由特定父进程派生的进程时,请使用ForceChildren。
实现说明(驱动程序行为)
-
驱动程序在进程创建时为每个已启用沙盒构建内存中的强制规则列表。每条
ForceChildren条目被转换为内部FORCE_ENTRY元素,存储规范路径或(存在通配符时)编译的 PATTERN。2 -
按映像名称匹配时,驱动程序使用辅助函数
Process_MatchImage,它实现了语言感知且特定于映像名称的匹配逻辑。4 -
代码确保在使用前移除重复反斜杠并解析重解析点;尽可能执行到 NT 风格路径的转换。如果无法转换,则使用原始路径进行匹配。15
另请参阅
图形界面(Sandboxie Manager / 沙盒管理器)
在哪里找到它:
- 打开 Sandboxie Manager(沙盒管理器)。
- 打开沙盒的选项:右键点击沙盒并选择"沙盒选项"。
- 在选项窗口中,找到列出强制条目的程序控制 / 强制程序区域。
如何添加强制子进程条目:
- 在选项窗口的程序控制 / 强制程序区域,你会看到强制条目列表以及"强制程序"、"强制子进程"和"强制文件夹"按钮。
- 点击"强制子进程",通过选择可执行文件(或使用打开文件对话框的浏览变体)添加条目。
- 该项目以类型标签"子进程"出现在列表中。勾选的条目保存到
ForceChildren;未勾选的条目保存到ForceChildrenDisabled。 - 要移除条目,选中它并点击"移除"。
说明和参考:
- UI 树控件是
OptionsWindow.ui中的ui.treeForced。选项窗口在OptionsForce.cpp(LoadForced/SaveForced/AddForcedEntry)中加载/保存这些列表。 - 同页显示的"禁用此沙盒的强制程序和强制文件夹"复选框是
ui.chkDisableForced,对应DisableForceRules设置。
脚注
-
驱动程序在存储条目之前移除重复反斜杠并转换重解析点。参见
Process_AddForceFolders如何把expnd规范化为buf并调用File_TranslateReparsePoints。 ↩↩ -
通配符条目使用
Pattern_Create创建 PATTERN 对象,并用Pattern_Match与小写的规范路径匹配。 ↩↩↩ -
Process_FcpInsert、Process_FcpCheck及相关例程实现基于父进程的强制映射,使新创建的子进程可以添加到以 PID 为键的映射中,并在子进程创建期间进行检查。 ↩ -
驱动程序使用
Process_TranslateDosToNt把 DOS 风格路径转换为 NT 风格路径,它包装File_TranslateDosToNt,如果转换因语法错误失败则回退为复制原始路径。 ↩↩ -
构建强制数据列表时,只考虑对当前 SID/会话已启用且未设置
DisableForceRules的沙盒。 ↩ -
Sandboxie 主目录下的路径被排除在强制之外;代码显式检查并跳过
Driver_HomePathNt下的匹配。 ↩ -
当警报规则匹配时,驱动程序可能设置警报状态(
IsAlert)并推迟强制。警报可能产生记录的消息,并且根据设置,可以阻止进程在沙盒下启动。 ↩