电脑旁突然多了一个人时,用户可能只想暂时收起当前窗口;人已经离开后,保护目标又变成锁住会话和私密文件。超级看门狗 SuperWatchDog 是 Windows 本地隐私保护工具,用用户预设的自动触发处理有人突然靠近、来不及操作电脑,以及离开后没有及时保护三类情况,并提供本地加密文件保险箱。
设备事件不能直接等同于保护动作。USB 拔出、蓝牙断开和摄像头状态只是观察结果,可靠程度也不同。若回调函数直接锁屏或关闭窗口,既难处理误判,也难恢复。
Windows 设备通知 ─┐
蓝牙连接状态 ─────┼→ SignalAdapter → PrivacySignal
摄像头观察结果 ───┤
快捷键消息 ───────┘record PrivacySignal(
SignalSource Source,
string Subject,
SignalKind Kind,
long Sequence);适配层只负责把不同接口转成稳定对象。窗口、锁屏和文件处理属于后面的动作层。
蓝牙短暂断开后可能重连,视觉状态也可能被下一帧推翻。确认过程需要绑定序列:
async Task<ConfirmedSignal?> ConfirmAsync(PrivacySignal signal)
{
var token = versions.Replace(signal.Subject, signal.Sequence);
await confirmation.For(signal.Source).ObserveAsync(signal);
if (!versions.Matches(signal.Subject, token))
return null;
if (!currentFacts.Match(signal))
return null;
return ConfirmedSignal.From(signal);
}快捷键可以直接确认,自动信号则按来源规则观察。确认方式不同,输出对象保持一致。
防窥不是动作越多越好。窗口隐藏、Windows 锁屏和私密文件保护面向不同层:
当前内容暴露 + 用户仍在场 → 隐藏指定窗口
会话可操作 + 用户已离开 → 锁屏
私密文件处于打开状态 → 保护文件边界
只有侧面观看问题 → 调整物理环境动作计划应在执行前固定:
var plan = policy.BuildSnapshot(
confirmedSignal,
exposureReader.Read(),
userPreferences.Current);执行中途不根据实时设置重新拼装计划,也不因普通步骤失败自动升级为高影响操作。
设备重新连接不代表周围已经安全。如果程序自动恢复所有窗口,旁人仍在时反而会重新暴露内容。保护和恢复应是两个独立流程:
ConfirmedSignal
↓
固化动作计划
↓
去重执行并核验
↓
Protected
↓
用户确认恢复
↓
RestoreSelectedState伪代码:
async Task RestoreAsync(UserConfirmation confirmation)
{
if (!confirmation.IsExplicit)
return;
foreach (var item in restorationSnapshot.Items)
await restorer.RestoreIfOwnedAsync(item);
}这里只恢复本次动作明确改变且仍可恢复的状态,不能把当前系统状态粗暴覆盖成旧快照。
record StepResult(string Action, StepState State, string? Hint);完整链路应区分已完成、目标原本满足、被取消和失败。用户需要知道下一步,而不是只看到“触发成功”。
防窥膜适合长期降低侧面可视角度;软件动作适合处理当前窗口、无人值守会话和已打开文件。手在键盘附近时,快捷键最直接;来不及操作时,提前配置的设备或手势提供另一条入口;人已经离开时,设备断开和离席判断才更有价值。
超级看门狗把这些触发方式连接到同一套用户预设动作,并用本地加密文件保险箱处理长期文件边界。它不判断用户屏幕内容,不伪装成监控软件,也不能替代保存工作和日常锁屏习惯。可恢复的电脑防窥设计,应让信号可撤销、动作可解释、恢复由用户决定。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。