禁用强制规则
DisableForceRules 是逐沙盒设置(v1.9.1 / 5.64.1 引入),禁用该沙盒的所有"强制"规则。设置后,驱动程序将跳过处理该沙盒中定义的 ForceFolder、ForceProcess 和 ForceChildren 条目,从而有效阻止基于这些规则的自动沙盒强制。
当你希望一个沙盒存在但不参与自动强制决策时(例如,只把该沙盒用于手动运行或特殊操作),此设置尤其有用。
语法
把它放在 Sandboxie 配置的沙盒节下:
有效值:
y— 启用:该沙盒的强制规则被忽略。n— 禁用(默认):构建强制列表时会评估该沙盒的强制规则。
行为
-
当驱动程序枚举配置节以构建内存中的强制规则时,它会调用
Conf_IsBoxEnabled,然后检查DisableForceRules。如果某个沙盒设置了DisableForceRules,该沙盒会被跳过强制规则处理,它的任何ForceFolder、ForceProcess或ForceChildren条目都不会被使用。1 -
影响沙盒是否被考虑的其他设置包括该沙盒对当前 SID/会话的启用状态——创建强制列表时不考虑对当前用户/会话未启用的沙盒。2
-
DisableForceRules不会移除该沙盒,也不改变其他非强制行为;它只阻止驱动程序把该沙盒的强制条目添加到运行时强制列表。
示例
为名为 NoAutoForce 的沙盒禁用强制规则:
保持强制规则启用(默认):
图形界面(Sandboxie Manager / 沙盒管理器)
从 Sandboxie Manager(沙盒管理器)界面的以下任一位置切换"禁用强制规则":
- 上下文菜单 -> 沙盒预设 -> 禁用强制规则
- 在沙盒列表中右键点击沙盒,打开"沙盒预设"子菜单,切换"禁用强制规则"项。
- 沙盒选项 -> 强制选项卡
- 右键点击沙盒,选择"沙盒选项",在"程序控制"选项卡下切换到"强制程序",勾选/取消勾选"禁用此沙盒的强制程序和强制文件夹"复选框,然后保存。
这些界面控件直接映射到 DisableForceRules 沙盒设置,并立即为所选沙盒更新它。45
实现说明(驱动程序行为)
-
驱动程序调用
Process_CreateForceData为每个已启用沙盒构建内存中的FORCE_BOX条目列表。创建期间它遍历配置节,并跳过任何Conf_Get_Boolean(section, L"DisableForceRules", 0, FALSE)返回真的沙盒。1 -
在
Process_CreateForceData中跳过沙盒,意味着它的任何ForceFolder、ForceProcess或ForceChildren列表都不会被添加到Process_GetForcedStartBox及相关检查使用的运行时boxes列表。
另请参阅
脚注
-
参见
Process_CreateForceData如何遍历所有配置节,并用if (Conf_Get_Boolean(section, L"DisableForceRules", 0, FALSE)) continue;跳过启用该设置的沙盒。 ↩↩ -
在为沙盒构建任何强制列表之前,使用 Conf_IsBoxEnabled 决定该沙盒是否对当前 SID/会话处于活动状态。 ↩
-
决定进程是否可以被强制时,驱动程序检查
AllowForceSystem等全局/会话级标志和基于会话的强制禁用标志;DisableForceRules只影响强制列表中逐沙盒的包含。 ↩ -
预设菜单切换在沙盒管理器的
SbieView.cpp(m_pMenuPresetsForce)中实现,并调用SetBoolSafe("DisableForceRules", ...)更改设置。 ↩ -
沙盒选项对话框在
OptionsForce.cpp中读写复选框ui.chkDisableForced,并在保存选项时持久化DisableForceRules设置。 ↩