系统守护(dsh-system-guard)
守护电脑系统文件的 DSH 插件:分析并分类本机系统文件,隐藏备份核心系统文件,定期巡查完整性, 发现损坏或被篡改时告警并修复;系统运行时产生的垃圾文件只做整理归类,要不要删由你打钩决定。
交流人格:鲸進進。技术结论以证据为准,没验证过的能力会明确标注「未验证」。
一、先说清楚能力边界(不夸大)
用户要的「最高权限」在这个插件里的真实含义是:用户点「授予守护权限」并通过 UAC 后, 插件以管理员身份执行保护类操作。它换来的是真正能做备份、修复、清理系统文件的能力; 但它不是操作系统内核级特权,也不是「凌驾于所有插件之上」的权限。
| 需求 | 本插件的实现 | 做不到 / 限制 |
|---|---|---|
| 向用户申请最高权限 | 面板「授予守护权限」→ 弹 UAC → 以管理员运行受控 helper | 需要你在 UAC 弹窗点「是」;插件不会也不能静默提权 |
| 权限只能用来保护系统 | lib/privilege.js 里冻结(Object.freeze)的动作白名单,所有写系统动作必须过 assertSystemAction() |
这是插件进程内的单点门控,不是内核强制 |
| 底层逻辑不可修改、不可删除 | 白名单写死在代码里、不读配置;发布前生成 integrity.json,运行时自校验核心代码,被改则拒绝一切写操作并告警 |
有文件写权限的人终究能改代码;自校验只能发现,不能物理阻止 |
| 拦截恶意篡改 | 巡查发现核心文件哈希/大小异常 → 告警 → 可从隐藏备份还原 | 没有文件系统过滤驱动,不能在内核层阻断写入,只能事后检测 + 回滚 |
| 备份被删除时拦截 | 备份目录隐藏(attrib +h +s)+ 保护 ACL + 清单冗余 + 删除检测告警 |
不能阻止管理员手动删;只能检测并尽量恢复 |
| 联网校准系统文件版本 | 用 DSH 的联网能力查询官方渠道,核对系统版本与支持状态,生成校准报告 | 微软等官方站不提供逐文件哈希清单,校准是「官方版本信息 + 本地完整性验证」,不是逐文件下载比对 |
| 不管 Windows 更新系统文件 | 巡查会识别「最近系统更新窗口」内的文件变化并标记为豁免,不告警、不修复 | 更新窗口靠本机补丁安装时间推算,可能有个别误判 |
| 定期巡查 | 插件随 DSH 运行;到设置的间隔自动巡查,也可手动点「巡查」 | DSH 关闭期间不巡查;不是常驻 Windows 服务 |
关于系统记忆类文件:内存转储、休眠文件、页面文件、崩溃转储、事件日志这类 「系统记忆类」文件会单独归为一类展示,永久不参与删除,避免影响系统运行与排障。
二、安装
插件以本地 bundle 形式安装(不影响其它插件):
plugin_manager install_bundle target: F:\DSH1.0\system-guard
安装后:设置侧栏底部的面板列表里会出现「系统守护」盾牌图标,点它打开面板。 首次打开会引导你点「开始首次分析」。
数据目录:C:\Users\<你>\.dsh\system-guard(设置、状态、基线清单、隔离区)。
三、面板使用
| 按钮 | 做什么 | 需要管理员 |
|---|---|---|
| 授予守护权限 | 弹 UAC,获取仅供保护系统使用的管理员权限 | 会弹 UAC |
| 分析(首次分析) | 读系统信息 → 联网核对版本 → 解析核心文件清单并分类 → 建立基线 → 备份核心文件 | 否(备份部分需要读权限) |
| 维护 | 重扫垃圾与系统文件分类、校验备份状态 | 否 |
| 巡查 | 逐文件核对核心文件哈希与存在性,检查备份状态;更新窗口内的变化豁免 | 否 |
| 修复 | 从隐藏备份还原损坏文件;也可选 SFC / DISM / 创建系统还原点 | 是 |
| 立即备份 | 把核心系统文件重新备份到剩余容量最大的硬盘 | 否 |
| 校验备份 | 核对备份文件是否完整、有没有被删 | 否 |
| 创建系统还原点 | 调 Windows 系统保护创建还原点(需系统保护已启用) | 是 |
| 立即联网校准 | 只读查询官方渠道,核对系统版本与支持状态 | 否 |
垃圾文件区:按「用户临时文件 / Windows 临时文件 / 更新缓存 / 系统日志 / 缩略图 / 错误报告 / 回收站 …」分组,每组可展开、可打钩、可全选;点「删除选中项」会二次确认,删除后显示释放了多少空间。 系统记忆类分组单独显示,复选框是禁用的。
设置区:自动巡查间隔(天)、联网校准询问间隔(天)、是否自动备份、备份盘等。
四、文件与数据结构
F:\DSH1.0\system-guard\ ← 插件源码(本工作区)
├─ index.js Host 入口:装配、HTTP、Agent 工具、定时器
├─ client.js 面板 UI(main 面板 + 侧栏图标)
├─ lib\config.js 设置/状态存储(原子写、坏文件留档)
├─ lib\privilege.js 守护权限门控 + 不可变底层逻辑 + 代码自校验
├─ lib\core.js 平台后端路由、任务队列、动作分发
├─ lib\patrol.js 巡查与校准排期计算
├─ lib\httpapi.js 同源 HTTP 接口
├─ lib\ps.js PowerShell 执行(含 UAC 提权)
├─ lib\win-backend.js Windows 后端
├─ scripts\guard.ps1 Windows 全部系统操作的唯一入口
├─ lib\posix-backend.js macOS / Linux 后端(未在真机验证)
├─ lib\calibrate.js 联网校准
├─ scripts\seal.mjs 生成 integrity.json(封存)
└─ test\ 真机只读验证 + 契约自测
备份目录(隐藏):<剩余容量最大的盘>:\SystemGuardBackup\.system-guard\,内含
manifest.json(每个文件的 SHA-256、大小、版本、原路径)与核心文件副本。
五、Agent 工具
插件还给 AI 注册了 system_guard 工具(status / analyze / patrol / junk-scan /
junk-delete / backup / backup-status / repair / restore-point / calibrate /
settings-save)。删除垃圾与修复必须由用户明确同意,工具侧强制要求 confirm: true;
授予守护权限(UAC)永远只能由用户在面板上点,Agent 不能代为授权。
六、验证状态
真机验证(Windows 10 专业工作站版 build 19045 / AMD64 / PowerShell 5.1 / 安装时非管理员):
| 项目 | 结果 |
|---|---|
| 安装 | plugin_manager install_bundle → application: applied;侧栏「系统守护」与主面板两个 slot 的登记均为 active |
| 面板接口 | /state、/analysis、/task、/action 真实返回;/state 已裁剪为摘要(约 2KB),明细走 /analysis |
| 首次分析 | 真实 HTTP 触发,约 17 秒:核心文件 84/84 命中(95.8 MiB,逐个算 SHA-256)、普通系统文件 4175 个、清单 145 条、垃圾分组 11 个 |
| 垃圾扫描 | 可清理约 902 MB;系统记忆类单列(约 48.5 GB 的页面/休眠文件与事件日志),不参与删除 |
| 隐藏备份 | 自动选剩余容量最大盘(本机 F:),84 文件 / 95.8 MiB;Hidden,System 属性生效;ACL 对 BUILTIN\Users 拒绝删除;manifest.json 逐文件 sha256;重复备份幂等 |
| 巡查 | 145 文件全部一致 → healthy;五种判定(健康/被改/损坏/缺失/更新窗口豁免)用临时文件逐项验证正确 |
| 垃圾删除 | 自建临时文件删除成功(freedBytes 真实);C:\Program Files 路径被目录白名单拒绝;缺 confirm 被拒 |
| 联网校准 | 宿主未配置搜索凭据时自动降级为直连官方页面,真实抓到 3 篇 learn.microsoft.com 页面并生成报告(如实标注「未使用搜索引擎」) |
| 修复 / 还原点 | 非管理员时返回 need-elevation,任务标记为 failed,不会假装成功 |
| 可取消 | AbortSignal 能杀掉 PowerShell 子进程(code=aborted) |
| Agent 工具 | system_guard 已注册并可调用,删除/修复强制要求 confirm: true |
未验证(如实说明)
- UAC 提权后的真执行:
sfc /scannow、DISM /RestoreHealth、从备份还原系统文件、创建还原点,这四项需要管理员权限, 测试机上非管理员、测试期间没有弹 UAC,因此只验证到提权门控与错误提示。请在面板点「授予守护权限」后按需实测。 - 浏览器内渲染:本会话无法控制浏览器做目视检查;slot 注册已 active、接口已真实返回,建议打开面板确认排版与深浅色。
- macOS / Linux:代码已实现(只统计/不删除,修复给出人工步骤),但没有在真机跑过。
- 联网搜索分支:本机没有 DeepSeek 搜索凭据,走的是 fetch 直连官方页面的降级路径;配置搜索凭据后才会走搜索分支。
- 安装时已写入的 Host 代码快照不会热更新:改动过的文件需要重启 DSH 后才全部生效。
七、许可
MIT(见 LICENSE)。图标为原创 SVG。
No comments yet. Be the first to write one.