用途与实际影响
这项功能怎样使用
为什么需要它
暂停不是卸载,恢复原状态也不是恢复Windows默认值。把这些动作混成“一键无损回滚”会让用户不知道到底改回了什么;原始状态必须在首次修改前保存,重复操作也不能覆盖它。
举个实际例子
“今天不要自动出泡泡,但先保留恢复办法。”用正式Disable关闭功能;需要时Enable再开启。要撤回旧屏保参数用Restore,要移除程序用Remove,静态图片仍按自己的原记录处理。
最后我会得到什么
留下清楚的原状态与操作结果。泡泡不主动锁屏,因此不会要求用户为退出它再输密码;这不代替Windows锁定,也不证明每个远程客户端都已经测试。
正常工作
安装、启用、立即启动、停用和恢复各有对应结果;真实画面与远程兼容仍另看。
发现问题
设置与预期不符时先指出差异;即使其他参数漂移,仍可先停用自动泡泡。
暂不可用
没有首次启用前的记录就不能猜旧设置来恢复;安装文件缺失或目标冲突也会停止。
从哪里开始
用 scripts/Install-EmeraldVeil.ps1 -Action Install/Remove 管安装,用 scripts/Set-NativeBubbles.ps1 -Action Enable/Disable/Restore 管策略;托盘可立即启动或预览。
需要准备什么
- 这次是安装、启用、停用、恢复还是卸载
- 如有远程显示问题,描述设备和看到的现象
从开始到拿到结果
- 1
先看当前状态
安装和首次启用时留下原屏保设置;已经启用过就不覆盖第一次记录。
- 2
分别看配置和真实画面
文件装好、程序运行与人眼看见泡泡是不同结果,远程屏幕还需实际连接验。
- 3
按本人目的撤回
可以只停自动泡泡、还原原屏保参数或卸载程序;原桌面与锁屏图片按另一份记录恢复。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
0.1.27安装回读通过;六分钟配置保留原验收关键规则与设计选择
托盘查看目标、空闲与错误,立即启动或双击等同Ctrl+Win+E;preview最多15秒,真正屏保直到活动或禁用。不提供单独会话暂停和托盘退出驻留,以免留下没有Owner的快捷键。
Windows可能在登录或驱动重置后重新打开自己的屏保触发。程序启用且运行时会在启动和每30秒检查并修正运行时的六分钟、非锁屏、关闭自动触发策略,避免Windows另起一套屏保;程序退出后这项维护也停止。
Enable首次记录runtime(运行环境)和相关注册表值的存在性、类型和值,原子落盘;重复Enable先校验而不覆盖第一次原状态。
Disable关闭泡泡和自动触发,不还原Radius或旧超时;Restore才按前像恢复,Remove另行删除已装程序与启动项。
远程兼容靠不主动切换到安全桌面、输入穿透、不抢焦点;实际连接与画面仍由客户端验收,不按软件名称声称全兼容。
本模块用到的名词
- Preimage(变更前状态)
- 第一次Enable前保存的相关配置;记录精确存在性、类型、值和运行时,不是整机镜像。
- WinExe(无控制台应用)
- 直接登录启动一个本用户图形程序,无需PowerShell常驻包装、服务或计划任务。
- 当前交互桌面
- 用户现在操作的桌面,泡泡保持在这里;不会自行进入Windows锁屏或凭据输入桌面。
专业定义
安装、配置、应急停止和恢复原设置分别处理;远程输入按相同桌面规则工作。
解决什么
安装验证不会证明自启已经执行,也不能猜出程序为何退出;本轮已恢复现有常驻与360秒配置。缺少或损坏原状态记录时,仍不能猜出第一次启用前的旧配置。
当前怎样实现
- Install默认读取artifacts/publish/win-x64/EmeraldVeil.exe,复制到%LOCALAPPDATA%\Programs\EmeraldVeil;使用暂存文件与哈希检查,再设置唯一Emerald Veil Native Bubbles Run值。源码构建目标net10.0-windows。
- Set-NativeBubbles保存emerald-veil.native-bubbles-preimage.v2,其中runtime(运行环境)含active/timeout_seconds/secure,registry_values逐项记录受影响值,含enabled与旧启动元数据;兼容v1。
- Enable配置360秒、非安全退出、Windows自动触发关闭与项目enabled。它核对已有Run项,不负责安装该项;先安装再启用。
- 登录启动时若项目启用,常驻程序检查保存的REG_SZ超时360及运行active/timeout/secure,每30秒按需修正。仅当active=false时接受运行timeout(等待超时)=0,项目自己的六分钟计时不变;Verify分别输出timeout_seconds、runtime_timeout_seconds与runtime_timeout_effective,不把运行0误报成保存设置错误。
- Disable匹配系统路径的原生泡泡进程并停止,清除enabled并维持active=false;Restore停止泡泡后按前像回填相关状态,并在操作失败时尝试恢复本次操作前状态。
- 不安装通用键盘记录器;输入分类只保留有限内存状态,点击穿透和不激活让普通输入继续送往当前应用。
- --status不启动缺失屏保,重复打开已运行程序也不强制预览;驻留者向Windows注册Application Restart以支持崩溃/挂起或Restart Manager恢复,不新增任务、服务或第二守护。实际重启行为与真实远控单独验收。
执行流程
- 1
从源码使用.NET 10 SDK构建单文件制品,再Install安装程序与直接Run项。
- 2
Enable先保存并验证第一次原状态,再配置本项目泡泡策略。
- 3
需要时分别用配置Verify、安装Verify、进程观察和实际画面判断,不能相互替代。
- 4
停用用Disable,按首次原值撤回用Restore;需要卸载再Remove,不以删除进程代替产品状态。
- 5
不再需要程序时Remove;旧桌面和锁屏按另一份图片记录在Windows设置中选回。
边界
- 本用户安装不需管理员;从源码构建泡泡程序需要.NET 10 SDK,静态图片恢复不需要它。
- 源仓库不存机器前像、个人日志或微软系统组件;卸载不意味着删除所有恢复记录。
- 原生泡泡不是安全锁屏;需要锁定电脑时仍由用户和Windows正常处理。
失败与恢复
- 原状态缺失、损坏或schema(数据结构)不支持
- Restore直接报错,无法替用户猜旧设置;Disable不依赖完整前像,可用于先关闭自动泡泡。
- 程序制品缺失或已有安装目标冲突
- 安装器报出具体目标,避免覆盖不属于该安装的文件;不伪造安装完成。
- 启用标志和Run值存在,但程序未运行
- 分开报告安装、配置和运行证据,核对退出原因后再恢复;不能由注册表正常推定六分钟空闲功能正在工作。
真实入口
scripts/Install-EmeraldVeil.ps1Install / Verify / Remove与实际制品路径。
scripts/Set-NativeBubbles.ps1Enable / Verify / Disable / Restore及v1/v2前像。
src/EmeraldVeil.App/App.xaml.cs / NativeBubblesSettings.cs / TrayIconHost.cs登录策略修正、托盘控制和30秒运行时维护。
docs/product-design.md原状态、远程输入、实机验收边界。
如何验证
- 本轮只读安装器 Verify 核对0.1.27与唯一直接WinExe启动项;安装文件的实际大小、哈希和编译标识单列,不声称本轮重新构建或安装。
- 既有Enable修正超时值后Verify通过:注册表与运行时均360秒,active和secure均false;首次前像哈希未改变。新安装程序在当前会话正常运行。
- 没有执行Disable、Restore、锁屏或真实远端验证;原停止原因未有充分证据,不把重新运行写成已证明根治所有退出。
与其他模块的关系
安装器负责程序和Run值,配置脚本负责屏保参数和前像,桌面/锁屏脚本负责图片;这些路径互相不能冒充。
